[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.



- 權威指南
- 新手上路
- 最新主要變動
- 概述
- 關于 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 授權許可證