• xunsearch搜索使用


    如何开始搜索?

    <?php
    // 引入
    require_once './sdk/xs/lib/XS.php';
    
    // 创建xs
    $xs = new XS('my');
    $search = $xs->search; // 获取 搜索对象
    

    典型处理

    <?php
    // 引入
    require_once './sdk/xs/lib/XS.php';
    
    // 创建xs
    $xs = new XS('demo');
    $search = $xs->search; // 获取 搜索对象
    
    $query = '项目测试'; // 这里的搜索语句很简单,就一个短语
    
    $search->setQuery($query); // 设置搜索语句
    $search->addWeight('subject', 'xunsearch'); // 增加附加条件:提升标题中包含 'xunsearch' 的记录的权重
    $search->setLimit(5, 0); // 设置返回结果最多为 5 条,并跳过前 0 条
    
    $docs = $search->search(); // 执行搜索,将搜索结果文档保存在 $docs 数组中
    $count = $search->count(); // 获取搜索结果的匹配总数估算值
    
    foreach ($docs as $doc)
    {
        echo $doc->rank() . ". " . $doc->subject . " [" . $doc->percent() . "%]
    ";
        echo $doc->message . "
    ";
    }
    
    echo "共".$count."个";
    
    

    快捷操作

    <?php
    // 引入
    require_once './sdk/xs/lib/XS.php';
    
    // 创建xs
    $xs = new XS('demo');
    $search = $xs->search; // 获取 搜索对象
    
    $count = $search->count('项目测试');
    $docs = $search->search('项目测试');
    
    foreach ($docs as $doc)
    {
        echo $doc->rank() . ". " . $doc->subject . " [" . $doc->percent() . "%]
    ";
        echo $doc->message . "
    ";
    }
    
    echo "共".$count."个";
    
    

    搜索中的串接操作

    <?php
    // 引入
    require_once './sdk/xs/lib/XS.php';
    
    // 创建xs
    $xs = new XS('demo');
    $search = $xs->search; // 获取 搜索对象
    
    $count = $search->count('项目测试');
    $docs = $search->setQuery('项目测试')->addWeight('subject', 'xunsearch')->setLimit(5, 0)->search();
    
    foreach ($docs as $doc)
    {
        echo $doc->rank() . ". " . $doc->subject . " [" . $doc->percent() . "%]
    ";
        echo $doc->message . "
    ";
    }
    
    echo "共".$count."个";
    
    

    构建搜索语句

    1.典型搜索语句

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

    使用空搜索条件进行搜索,其含义相当于全部匹配

    2.布尔搜索
    多个词语之间的“并且”、“或者”、“异或”关系

    $search->search('杭州 西湖');
    $search->search('杭州 AND 西湖'); // 这两者效果是相同的
     
    $search->setFuzzy()->search('杭州 西湖');
    $search->search('杭州 OR 西湖');  // 这两者效果相同,都是只要求匹配其中一个
     
    $search->search('杭州 XOR 西湖'); // 表示必须包含其中一个词,并且不允许同时包含这两个词。
    

    要求搜索结果中不含特定关键词

    $search->search('神雕侠侣 -电视剧'); // 正确用法1
    $search->search('神雕侠侣 NOT 电视剧'); // 正确用法2
    

    组合关系的括号表达式

    // 要求结果包含 “杭州+西湖” 或 “杭州 + 西溪湿地”,并且不能包含 “汽车 火车”
    $search->search('((杭州 AND 西湖) OR (杭州 AND 西溪湿地)) NOT (汽车 火车)');
    

    3.精确搜索
    使用双引号进行精确匹配

    $search->search('上海科技大学');
    // 这时内部把搜索语句切割为:上海+科技+大学,要求搜索结果同时包含这三个词即可,
    // 但不要求它们的出现顺序,有可能先出现”科技“再出现”上海“,也有可能这三个词离得很远。
     
    $search->search('"上海科技大学"');
    // 加上引号后,要求搜索结果必须依次出现”上海+科技+大学“,要显得精准很多。
    

    4.索引词之间的距离查询

    $search->search('杭州 NEAR 西湖'); // 要求结果中出现 "杭州" 和 "西湖",并且距离不超过 10 个词
    $search->search('杭州 NEAR/5 西湖'); // 要求它们距离不超过 5个词
    
    $search->search('杭州 ADJ 西湖'); // 要求结果中先出现 "杭州" 再出现 "西湖",并且距离不超过 10 个词
    $search->search('杭州 ADJ/3 西湖'); // 要求它们距离不超过 3个词
    

    字段值区间搜索

    $from = strtotime("2011-1-1"); // 起始时间 2011年1月1日
    $to = strtotime("2011-9-1"); // 结束时间 2011年9月1日
     
    // 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();
    

    按字段索引词加权

    // 搜索包含 "杭州" 的结果,并且提升 subject 字段包含 "西湖" 的数据的排序
    $docs = $search->setQuery('杭州')->addWeight('subject', '西湖')->search();
    
  • 相关阅读:
    Web前端开发中的各种CSS规范
    SVN简明课程
    使用django-compressor压缩静态文件
    今日头条视频Url嗅探
    python 异常类型
    抓包分析工具备注
    电子签章盖章之jQuery插件jquery.zsign
    程序员读书雷达
    在csdn里markdown感受
    如何在无趣的世界里,做一个有趣的人?
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/9255040.html
Copyright © 2020-2023  润新知