测试xunsearch

<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=gbk" />
    <title>coreseek中文全文搜索在php程序中的应用</title>
</head>
<body>
<h3><font color="blue">coreseek全文搜索在php程序中应用</font></h3>
<form action="xs.php" method="post">
    输入搜索的关键词:<input type="text" name="keyword" size="30" <?php echo $_POST['keyword'];?> />
    <input type="submit" name="sub" value="搜索" />
</form>
<hr />
<?php
echo "<pre />";
#引入接口文件,其实你懂的,就是一个类
require_once '/usr/local/xunsearch/sdk/php/lib/XS.php'; //  引入 xunsearch sdk
if(isset($_POST['sub']) && $_POST['keyword'] != ''){
    $keyword = trim($_POST['keyword']);    //接收关键词
    $xs = new XS('demo');    // demo  为项目名称,配置文件是:$sdk/app/demo.in i
    //$index = $xs->index;   //  获取索引对象
    $search = $xs->search;   //  获取搜索对象
    //模糊匹配
    //    $where = "  subject:$keyword";//查询条件


    //    $search->search('上海人民公园'); // 检索 body 型字段及混合区
    //    $search->search('上海 人民公园'); // 用空格连接 2 个关键词, 这种情况比上面的用法更明确
    //    $search->search('subject:上海 人民公园'); // 特别要求 subject 字段包含 "上海"
    //    $search->setFuzzy()->search('上海公园'); // 开启模糊搜索,搜索 "上海"  "公园"
    //$words = $search->getHotQuery(); // 获取前 6 个总热门搜索词
    //    $words = $search->getHotQuery(10, 'lastnum'); // 获取前 10 个上周热门词



    // 表示先以 chrono 正序、再以 pid 逆序(pid 是字符串并不是数值所以 12 会排在 3 之后)
    //    $sorts = array('chrono' => true, 'pid' => false);

    // 如果直接把字段名作为数组的值,默认对该字段采用逆序,因此以上用法和下面用法是完全一样的
    //    $sorts = array('chrono', 'pid' => false);

    // 设置搜索排序
    //    $search->setMultiSort($sorts);
    //    $search->setSort('pid'); //  chrono 字段的值倒序
    //    $search->setSort('chrono', true); //  chrono 字段的值正序排列
    //    $search->setLimit(5); // 设置返回结果为前 5     //    $search->setLimit(5, 15); // 设置返回结果为 5 条,但要先跳过 15 条,即第 1620 条。

    /**
     * 以下拼写示例则简化,并直接传入 Query 语句进行测试
     * 您也可以例句用 `util/Quest.php demo --correct <word>` 进行测试
     */

    //    print_r($search->getCorrectedQuery('gw'));  // 通过声母缩写得到建议: "测试"
    //    $search->getCorrectedQuery('ceshi');  // 通过全拼缩写得到建议: "测试"
    //    $search->getCorrectedQuery('yunsearch'); // 通过拼写纠错得到: xunsearch
    //    $search->getCorrectedQuery('xunseach 侧试'); // 混合纠错得到: xunsearch测试

    //    echo $search->getQuery('杭州 西湖');
    // 搜索包含 "杭州" 的结果,并且提升 subject 字段包含 "西湖" 的数据的排序
    //    $docs = $search->setQuery('杭州')->addWeight('subject', '西湖')->search();
    //    $from = strtotime("2011-1-1"); // 起始时间 201111    //    $to = strtotime("2011-9-1"); // 结束时间 201191    //
    //    // 1. <= $to: 要求结果的时间必须在 2011-9-1 之前,并且包含 2011-9-1
    //    $docs = $search->setQuery('杭州')->addRange('chrono', null, $to)->search();
    //
    //    // 2. >= $from: 要求结果的时间必须在 2011-1-1 之后,并且包含 2011-1-1
    //    $docs = $search->setQuery('杭州')->addRange('chrono', $from, null)->search();
    //
    //    // 3. > $from && <= $to: 要求结果的时间必须在 2011-1-1 之后 并且 2011-9-1 之前
    //    $docs = $search->setQuery('杭州')->addRange('chrono', $from, $to)->search();


    //    $search->getExpandedQuery($keyword); // 返回:项目, xunsearch, 行为, 项目测试
    //    $search->getExpandedQuery('xm'); // 返回:项目, 项目测试
    //    $search->getExpandedQuery(''); // 返回:项目, 项目测试
    //    $search->getExpandedQuery('项目'); // 返回:项目测试
    $search->setLimit(1000);//设置查询条数
    $docs = $search->setFuzzy()->search($keyword);  //  搜索测试    echo $search->getLastCount();//获取条数

    // 获取前 6 个和默认搜索语句 "西湖" 相关搜索词
    // $words = $search->getRelatedQuery();

    // 获取 10 个和 "杭州" 相关的搜索词
    //    $words = $search->getRelatedQuery($keyword, 10);
    // 由于拼写错误,这种情况返回的数据量可能极少甚至没有,因此调用下面方法试图进行修正
    //    $corrected = $search->getCorrectedQuery();
    //    print_r($corrected);
    //    if (count($corrected) !== 0)
    //    {
    //        // 有纠错建议,列出来看看;此情况就会得到 "测试" 这一建议
    //        echo "您是不是要找:\n";
    //        foreach ($corrected as $word)
    //        {
    //            echo $word . "\n";
    //        }
    //    }




    echo "<table border='1' bordercolor='green' cellspacing='0'><tr><th>编号</th><th>标题</th><th>内容</th></tr>";
    foreach ($docs as $doc) {
        $pid = $search->highlight($doc->pid); //  高亮处理标题
        $subject = $search->highlight($doc->subject); //  高亮处理标题
        $subject1 = $search->highlight($doc->message); //  高亮处理标题
        echo "<tr><td>".$pid."</td><td>".$subject."</td><td>".$subject1."</td></tr>";

    }
    echo "</table>";

    // $search->setQuery($keyword);
    // // 获取前 6 个和默认搜索语句 "西湖" 相关搜索词
    // $words = $search->getRelatedQuery();
    // print_r($words);
}
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值