同义词搜索

人类语言文化丰富,同一个意思有无数种不同的表达方式。因此,同义词

是全文检索中非常重要和必要的一项基础功能。从 1.3.0 版本起,Xunsearch

开始提供同义搜索搜索功能。

1. 什么是同义词搜索

为了更好的提升用户搜索体验,我们希望用户在搜索“浙江大学”的时候也同时匹配包含缩写“浙大”的结果,

这就是所谓的同义词搜索。通常我们说“浙大”是“浙江大学”的同义词,前者是常用缩写,后者是标准词(原词)。

同义词搜索 完全依赖于您事先设置好的同义词库,词库内每条记录由“标准词(原词)”和“同义词”组成,

它们都必须是独立的词汇,也就是最小的索引单位,不可以是多个词组成的短语。

Tip: 独立词汇的意思对于英文来说就是一个单词,对于中文来说必须是 scws 词库中的一个词。

Xunsearch 的同义词不同于 Xapian,会智能进行字段匹配和转换,您只需维护通用词库。

2. 英文同义词的特殊处理

英文单词的同义词在 xunsearch 中做了一些个特殊处理:

统一小写 统一转换为小写字母进行存储,不支持必须保留大写字母的同义词。

同根词支持 英语同一个单词有多种不同的形式,如:单复数、过去式和现在分词等。

而它们要传送的其实是同一种涵义。因此,对于纯英文的同义词记录会自动进行词根处理。

词根记录保存为大写字母 Z 开头的记录。例如:

设置 find 是 search 的同义词,那么检索 searching 时如果 searching

本身没有同义词,那么也会匹配包含 finding 或 finds 等同根词的结果。

复合词支持 支持对多个单词组成的短语设置同义词,词之间用一个半角空格分开,

但同义词仍然只允许一个单词或中文词哦。如:

设置 您好 为 hello world 的同义词,那么检索 hello world ok

时也会匹配同时包含 您好 和 ok 的记录。

3. 管理同义词库

您可以通过 XSIndex::addSynonym 和 XSIndex::delSynonym 来添加和删除同义词记录。

多次调用这两个接口函数的时候支持使用索引缓冲区来提高效率。

参数 $raw 是字符串,表示记录中的原词(标准词),$synonym 也是字符串,表示记录中的同义词,

对于删除操作可以省略该参数表示清空原词的所有同义词。

以下为示例代码,其中的 $index 变量是索引操作对像,参见如何开始使用索引?

//给 "搜索" 增加 "检索" "查找" 两个同义词

$index->addSynonym('搜索','检索');$index->addSynonym('搜索','查找');//给 "Hello world" 增加同义词 "你好"

$index->addSynonym('hello world','你好');//删除 search 的全部同义词

$index->delSynonym('search');//删除 "搜索" 的同义词 "检索"

$index->delSynonym('搜索','检索');

除了调用 API 外,您还可以使用 Indexer 索引管理工具 进行同义词管理。

4. 查看已有同义词库

通过 XSSearch::getAllSynonyms 来获取当前索引库内的全部同义词记录,返回一个数组,

以原词(标准词)为键,其同义词列表为值。

以下为示例代码,其中的 $search 变量是搜索操作对像,参见如何开始使用搜索?

//获取当前库的前 100 个同义词记录

$synonyms=$search->getAllSynonyms();//获取当前库第 6~15 条同义词记录

$synonyms=$search->getAllSynonyms(10,5);//查看包含隐藏同义词根在内的前 20 条记录

$synonyms=$search->getAllSynonyms(20,0,true);

除了调用 API 外,您还可以使用 Quest 搜索工具 进行同义词管理。

5. 使用同义词搜索功能

同义词搜索默认是不开启的,如果您打算使用同义词搜索,这部分功能隶属于构建搜索语句。

//假设”搜索“有且仅有一个同义词”检索“

//开启同义词搜索,输出:

//Xapian::Query(((搜索:(pos=1) SYNONYM 检索:(pos=89)) AND 世界:(pos=2)))

$search->setAutoSynonyms()->setQuery('搜索世界')->getQuery();//开启同义词搜索,并带有字段效果,假设 subject 是项目的第二个字段,输出:

//Xapian::Query(((B搜索:(pos=1) SYNONYM B检索:(pos=89)) AND B世界:(pos=2)))

$search->setAutoSynonyms()->setQuery('subject:搜索世界')->getQuery();//关闭同义词搜索,输出:

//Xapian::Query((搜索:(pos=1) AND 世界:(pos=2)))

$search->setAutoSynonyms(false)->setQuery('搜索世界')->getQuery();

Tip: 您可以分别在开启/关闭同义词功能的条件下,对比 XSSearch::getQuery 查询语句分析结果。

$Id$

php 同义词词库,同义词搜索功能 - 权威指南 - 迅搜(xunsearch) - 开源免费中文全文搜索引擎...相关推荐

  1. 迅搜 php,安装、升级 - 权威指南 - 迅搜(xunsearch) - 开源免费中文全文搜索引擎

    安装 Xunsearch PHP-SDK 是与 xunsearch 后端服务协同工作的,所以后先必须先在您的服务器 上安装服务端,服务器操作系统要求必须是 Linux.BSD 或其它类 UNIX 系统 ...

  2. 站内搜寻引擎 php mysql_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...

    热点新闻 本软件趋于稳定,版本发布速度放缘,久违了,这次加入支持通过 composer 管理 PHP-SDK,并加入 yii2 扩展支持!非常高兴能在今晚发布 xunsearch-1.4.9 正式稳定 ...

  3. mysql迅_迅搜(xunsearch) - 开源免费中文全文搜索引擎|PHP全文检索|mysql全文检索|站内搜索...

    热点新闻 本软件趋于稳定,版本发布速度放缘,久违了,这次加入支持通过 composer 管理 PHP-SDK,并加入 yii2 扩展支持!非常高兴能在今晚发布 xunsearch-1.4.9 正式稳定 ...

  4. 媒体利器!最新同义词词库助力创作伪原创

    [文章标题] "激动人心!最新同义词词库发布,助力媒体创作伪原创" [文章内容] 近日,一份全新的同义词词库正式发布,为媒体行业带来了一股新的创作风潮.这个词库的独特之处在于,它能 ...

  5. 自编记单词小程序项目(自定义词库,多功能)C/C++语言实现

    一款方便实用又简洁的记单词小程序,自定义单词库,多功能协助记忆!!! github地址:https://github.com/Knock-man/Memorizing-words-program 如今 ...

  6. 【ES】Elasticsearch实现电商词库提示搜索

    文章目录 Elasticsearch实现电商词库提示搜索 前序 一. 自定义analyzer 二. 自定义mappings 三. 数据的测试 3.1 添加测试数据 3.2 测试 3.3 导入数据 四. ...

  7. 充电复习之ES 扩展词库及热更新词库,扩展同义词词库,及热扩展词库

    1.es扩展词库在/usr/local/es/elasticsearch-node01/plugins/elasticsearch-analysis-ik-7.2.1/config中新建文件 new_ ...

  8. 关键词词库制作-搜索词分析工具

    关键词词库制作 关键词词库是一种帮助SEO和SEM优化的工具,它可以帮助您确定关键词的流行程度.竞争程度.搜索意图和其他相关信息等等.以下是一些关键词词库制作的方法: 收集关键词:首先需要收集相关的关 ...

  9. PHP+mysql数据库开发搜索功能:中英文分词+全文检索(MySQL全文检索+中文分词(SCWS))...

    PHP+mysql数据库开发类似百度的搜索功能:中英文分词+全文检索 中文分词: a)   robbe PHP中文分词扩展: http://www.boyunjian.com/v/softd/robb ...

  10. 全文搜索,迅搜(Xunsearch)使用心得

    最近公司的项目需要全文搜索的功能,网上有人说用迅搜可以,特地研究了下.文档看了半天,愣是没看懂:看了两天才看出来点东西,然后跟着文档动手测试,有点理解了,总结一下 ,希望能帮助以后用到的phper. ...

最新文章

  1. WKWebView 的使用简介
  2. SVN的Windows和Linux客户端操作详解
  3. springboot获取resources路径_Docker构建SpringBoot应用
  4. “寒假”建站创业 选购虚拟主机是关键
  5. 2021暑假实习-SSM超市积分管理系统-day02笔记
  6. 野人与传教士过河java_传教士和野人过河(经典MC问题)
  7. Java高级开发面试,java泛型下界通配符
  8. python对象属性在引用时前面需要加()_python基础-面向对象进阶
  9. 对vuex在项目中的使用
  10. 尊贵的iPhone 11用户们,苹果喊你们换显示屏模块了……
  11. 【报告分享】2020年5G芯片行业研究报告.pdf(附下载链接)
  12. Python基础__函数
  13. 【Java编译】含package的类文件编译
  14. 跟我从零基础学习Unity3D开发--NGUI入门基础
  15. 手机电子词典_论央视主持人的个人修养:习惯性纠正他人读音,手机里装着电子版词典!...
  16. hyper用vnc连接,hyper用vnc连接该如何设置vnc
  17. linux系统windows模拟器下载,Wine 1.7.40 发布下载,Windows 模拟器
  18. 关于linux系统遍历一个目录下所有文件的代码原理以及代码
  19. 4.贪心算法 含例题
  20. win10系统下nodejs安装及环境配置

热门文章

  1. gimp 抠图_gimp软件如何实现抠图?
  2. Fashion-MNIST数据集无法下载解决方案
  3. python模拟别人说话的声音传得最远_谁说话的声音传得最远脑筋急转弯的答案是什么...
  4. 适合python组态软件_组态软件心得体会
  5. WPF从零到1教程详解,适合新手上路
  6. 扫描工具——Nmap用法详解
  7. MySql 数据类型 - 小数型
  8. 主生产计划 操作教程 用友u8_用友U860_主生产计划用户使用手册.pdf
  9. Altair Inspire Extrude 2021.1.0 Build 6936 x64
  10. B站 (哔哩哔哩) 泄露源码中的有趣片段(彩蛋)