SOLR拼寫檢查相關

2021-08-27 19:44:19 字數 2525 閱讀 9318

6.8相似匹配

在我們使用網頁搜尋時,會注意到每乙個結果都包含乙個 「相似頁面」 鏈結,單擊該鏈結,就會發布另乙個搜尋請求,查詢出與起初結果類似的文件。solr 使用 morelikethiscomponent(mlt)和 morelikethishandler 實現了一樣的功能。如上所述,mlt 是與標準 solrrequesthandler 整合在一起的;morelikethishandler 與 mlt 結合在一起,並新增了一些其他選項,但它要求發布乙個單一的請求。我將著重講述 mlt,因為使用它的可能性更大一些。幸運的是,不需要任何設定就可以查詢它,所以您現在就可以開始查詢。

morelikethiscomponent 引數:引數

說明 值域

mlt在查詢時,開啟/關閉 morelikethiscomponent 的布林值。

true|false

mlt.count

可選。每乙個結果要檢索的相似文件數。          

> 0

mlt.fl  

用於建立 mlt 查詢的字段。               

任何被儲存的或含有檢索詞向量的字段。

mlt.maxqt

> 0

要想使用匹配相似首先在 solrconfig.xml 中配置 morelikethishandler 

然後我就可以請求

上面請求的意思查詢 id 為 6f398ccd-2de0-d3b1-9dd6-d4e532ffc531 的 document ,然後返回與此 document 在 name 欄位上相似的其他 document。需要注意的是 mlt.fl 中的 field 的 termvector=true 才有效果  

使用solrj時也同樣加入引數就可以

solrquery  query     = new solrquery();

query.set("qt", "/mlt");

query.set("mlt.fl","content");

query.set("fl", "id,");

query.set("q", "id: 6f398ccd-2de0-d3b1-9dd6-d4e532ffc531");

query.setstart(0);

query.setrows(5);

queryresponse      rsp = server.query(query);

solrdocumentlist list = rsp.getresults();

6.9拼音檢索

拼音檢索中國人的專用檢索,例如:中文內容為 中國 的輸入zhongguo、zg、zhonggu 全拼、簡拼、拼音的相鄰的一部份都應該能檢索出 中國 來。

想要實現拼音檢索第乙個就是拼音轉換我這裡用的是pinyin4j進行拼音轉換。第二個就是n-gram的題目,推敲到使用者可能輸入的既不是字首也不是字尾,所以此處選擇的是n-gram技巧,但不同於常用的n-gram,我應用的從一邊開端的單向的n-gram,solr裡的實現叫edgengramtokenfilter,但是分的分的太細了,不需要這麼複雜edgengramtokenfilter,也就是說我們用的n-gram不同於傳統的n-gram。

同樣的例子使用edgengramtokenfilter從前往後取2-gram的結果是zh, 一般是取min–max之間的所有gram,所以使用edgengramtokenfilter取2-20的gram結果就是zh,zho, zhon, zhong, zhongg, zhonggu, zhongguo, 從這個例子也不難理解為什麼我要選擇使用edgengramtokenfilter而非一般意義上的n-gram, 考慮到使用者可能輸入的不是字首而是字尾,所以為了照顧這些使用者,我選擇了從前往後和從後往前使用了兩次edgengramtokenfilter,這樣不只是字首、字尾,二十任意的字串都考慮進去了,所以大幅度的提高了搜尋體驗.

現在思路明確了我們把它結合到solr中,為了方便使用現在寫了兩個filter進行處理拼音分詞問題乙個是拼音轉換filter(pinyintransformtokenfilter)乙個是拼音n-gram的filter(pinyinngramtokenfilter),這樣一來使用時就不用在新增索引前做攔音的轉換了。而且pinyintransformtokenfilter還有個好處就是它只使用中文分詞器分過的詞,也就是說做轉換的詞都是有用的不重複的,不會對沒用的停詞類的做拼音轉換和重複拼音轉換,這樣大大的提高了拼音轉換速度。

想要solr支援拼音檢索就要先把拼音分詞(pinyinanalyzer)的jar複製到\solr\contrib\analysis-extras\lib下,然後在schema.xml中配置乙個拼音字段型別:

mintermlenght:最小中文詞長度,意思是小於這個值的中文詞不會做拼音轉換。

mingram:最小拼音切分長度。

如果想使用簡拼的話在拼音轉換filter 使用這個引數isfirstchar="true"就可以了

Solr之拼寫檢查。

首先配置solrconfig.xml檔案可能已經有這兩個元素 如果沒有新增即可 需要根據我們自己的系統環境做些適當的修改。使用solrj時也同樣加入引數就可以。solrquery query new solrquery query.set q query.set qt spell queryresp...

solr拼寫檢查 spellCheck

拼寫檢查 spellcheck 首先配置 solrconfig.xml,檔案可能已經有這兩個元素 如果沒有新增即可 需要根據我們自己的系統環境做些適當的修改。default name spellchecker true false false 1spellcheck 配置完之後,需要重新建遍索引才能...

solr拼寫檢查配置

拼寫檢查功能,能在搜尋時,提供乙個較好使用者體驗,所以,主流的搜尋引擎都有這個功能。solr是乙個基於lucene開發介面實現的成熟的搜尋系統,通過不同的控制項 component 實現不同的搜尋功能,其中乙個spellcheckcomponent實現了拼寫檢查功能。要在搜尋過程中新增拼寫檢查功能,...