[Xunsearch PHP-SDK](http://www.xunsearch.com) v1.4.8 权威指南
1. [什么是同义词搜索](#)
1. [英文同义词的特殊处理](#)
1. [管理同义词库](#)
1. [查看已有同义词库](#)
1. [使用同义词搜索功能](#)
# 同义词搜索
人类语言文化丰富,同一个意思有无数种不同的表达方式。因此,**同义词**是全文检索中非常重要和必要的一项基础功能。从 `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. 使用同义词搜索功能[?]()
同义词搜索默认是不开启的,如果您打算使用同义词搜索,这部分功能隶属于[构建搜索语句](#)。
在设置查询语句 [XSSearch::setQuery](#) 之前调用 [XSSearch::setAutoSynonyms](#) 来开启同义词功能。
~~~
// 假设”搜索“有且仅有一个同义词”检索“
// 开启同义词搜索,输出:
// 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$
[« Logger 搜索日志管理](#)
[在SDK中使用SCWS分词 »](#)
Copyright © 2008-2011 by [杭州云圣网络科技有限公司](http://www.xunsearch.com)
All Rights Reserved.
![](https://box.kancloud.cn/2015-09-10_55f11d05d6a60.gif)
![](https://box.kancloud.cn/2015-09-10_55f11d05e13ba.gif)
![](https://box.kancloud.cn/2015-09-10_55f11d05eab38.gif)
- 权威指南
- 新手上路
- 最新主要变动
- 概述
- 关于 Xunsearch PHP-SDK
- 安装、升级
- 体验 demo 项目
- 开发规范
- 开发流程
- 了解基础对象
- 基础对象概述
- XS 项目
- XSException 异常
- XSDocument 文档
- XSIndex 索引管理
- XSSearch 搜索
- XSTokenizer 分词接口
- 编写项目配置文件
- 项目配置详解
- 自定义分词器
- 编写第一个配置文件
- 管理索引
- 索引概述
- 添加文档
- 更新、修改文档
- 删除文档
- 清空索引
- 平滑重建索引
- 使用索引缓冲区
- 自定义SCWS词库
- 使用搜索
- 搜索概述
- 构建搜索语句
- 获取搜索匹配结果
- 获取搜索匹配数量
- 获取热门搜索词
- 获取相关搜索词
- 搜索建议和纠错
- 按字段值分面搜索
- 使用辅助工具
- RequiredCheck 运行检测
- Indexer 索引管理器
- Quest 搜索测试工具
- SearchSkel 生成搜索代码
- IniWizzard 配置文件向导
- Logger 搜索日志管理
- 专题
- 同义词搜索功能
- 在SDK中使用SCWS分词
- API 指南
- XS
- XS
- XSCommand
- XSComponent
- XSDocument
- XSErrorException
- XSException
- XSFieldMeta
- XSFieldScheme
- XSIndex
- XSSearch
- XSServer
- XS.tokenizer
- XSTokenizer
- XSTokenizerFull
- XSTokenizerNone
- XSTokenizerScws
- XSTokenizerSplit
- XSTokenizerXlen
- XSTokenizerXstep
- XS.util
- XSCsvDataSource
- XSDataFilter
- XSDatabaseDataSource
- XSDebugFilter
- XSJsonDataSource
- XSUtil
- XS.util.db
- XSDatabase
- XSDatabaseMySQL
- XSDatabaseMySQLI
- XSDatabasePDO
- XSDatabasePDO_MySQL
- XSDatabasePDO_PgSQL
- XSDatabasePDO_SQLite
- XSDatabasePgSQL
- XSDatabaseSQLite
- XSDatabaseSQLite3
- XS.utilf
- XSDataSource
- 其它文档
- 关于 xunsearch
- 特色和优势
- Xunsearch 架构简图
- 下载 Xunsearch
- 商业服务与支持
- XunSearch 授权许可证