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實現了拼寫檢查功能。要在搜尋過程中新增拼寫檢查功能,...