suggest 是搜索引擎一個方便的功能

suggest 是搜索引擎一個方便的功能,對數據的關鍵字進行預測和建議,減小了用戶的輸入,大致的效果以下:
suggest
幸運的是 solr 也提供了相似的功能,在該功能的基礎上,配合 jQuery 或 kissy 的自動完成組件就能夠實現相似上面的功能。
啓動該功能的過程大致以下:
suggest 的功能依賴拼寫組件,solr_home/data 目錄下會有一個 spellchecker 目錄,該目錄用於存放 suggest 和 拼寫檢查的索引庫,因此要先配置 spell 功能,配置以下:html

1
2
3
4
5
6
7
8
9
<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
   <str name="queryAnalyzerFieldType">textSpell</str>
   <lst name="spellchecker">
     <str name="name">default</str>
     <str name="field">title</str>
     <str name="buildOnCommit">true</str>
     <str name="spellcheckIndexDir">spellchecker</str>
   </lst>
 </searchComponent>

上述中的 field 用於指定主索引庫中用於 spellchecker 索引的數據從主索引庫的那個字段來獲取。buildOnCommit 該屬性爲 true 時,當主索引庫有提交指令時,將會自動把指定字段的內容送到 spellchecker  索引庫,做爲拼寫檢查和 suggest 使用。
接下來配置 suggest 的處理組件和請求類,以下所示:java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<searchComponent class="solr.SpellCheckComponent" name="suggest">
    <lst name="spellchecker">
        <str name="name">suggest</str>
        <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
        <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookupFactory</str>
        <float name="threshold">0.005</float>
        <str name="buildOnCommit">true</str>
    </lst></searchComponent><requestHandler class="org.apache.solr.handler.component.SearchHandler" name="/suggest">
    <lst name="defaults">
        <str name="spellcheck">true</str>
        <str name="spellcheck.dictionary">suggest</str>
        <str name="spellcheck.onlyMorePopular">true</str>
        <str name="spellcheck.count">5</str>
        <str name="spellcheck.collate">true</str>
    </lst>
    <arr name="components">
        <str>suggest</str>
    </arr></requestHandler>

這時候從新提交數據,會發現原先爲空的 spellchecker 爲空的索引庫中有數據了,而後打開相似這樣的網址(請將q=的值換成 title 字段中有的值)apache

1
http://localhost:8983/solr/suggest/?q=%E7%94%9F

suggestRSS

本文固定連接: http://www.chepoo.com/solr-suggest-apply.html | IT技術精華網app

相關文章
相關標籤/搜索