Solr的自动完成实现方式(第三部分:Suggester方式续)
在之前的兩個(gè)部分(part1、part2)中,我們學(xué)會(huì)了如何配置和查詢(xún)solr來(lái)獲取自動(dòng)完成的功能。今天,我們來(lái)看一下如果為suggester添加字段,以這種方式來(lái)提供自動(dòng)完成的功能。?
?
組件配置?
在上一期的配置組件中添加如下的參數(shù):
這樣我們的配置就變成了:?
<searchComponent name="suggest" class="solr.SpellCheckComponent"><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.TSTLookup</str>
<str name="field">name_autocomplete</str>
<str name="sourceLocation">dict.txt</str>
</lst>
</searchComponent>
使用這個(gè)參數(shù),我們讓suggest組件使用名叫dict.txt的文件作為solr的配置字典。?
handler配置?
handler的配置也需要添加額外的一個(gè)參數(shù):
?
完整的配置為:?
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchComponent"><lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.count">10</str>
<str name="spellcheck.onlyMorePopular">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
這個(gè)參數(shù)告訴solr,當(dāng)查詢(xún)的結(jié)果數(shù)多于設(shè)定的count數(shù)時(shí),返回點(diǎn)擊數(shù)更多的那些。?
Dictionary?
我們告訴solr來(lái)使用這個(gè)字段,那么這個(gè)字段長(zhǎng)的什么樣呢?下面來(lái)看一個(gè)例子:?
Hard disk hitachi
Hard disk wd 2.0
Hard disk jjdd 3.0
這個(gè)字典的結(jié)果是什么樣的呢?每個(gè)詞組放在單獨(dú)的一行中,每行以改詞組的權(quán)重為結(jié)束(權(quán)重與詞組之間以TAB字符分隔),這個(gè)權(quán)重就是跟spellcheck.onlyMorePopular=true?香港的參數(shù),默認(rèn)值為1.0。該字段必須以UTF-8的編碼格式存儲(chǔ)。每行前有#字符的將被忽略(注釋行)。?
數(shù)據(jù)?
以這種方式,我們不需要數(shù)據(jù),字段就是數(shù)據(jù)。?
運(yùn)行?
在重新構(gòu)建suggester之后,我們來(lái)看一下它的運(yùn)行情況,輸入命令:?
得到的結(jié)果為:?
<?xml version="1.0" encoding="UTF-8"?><response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">0</int>
</lst>
<lst name="spellcheck">
<lst name="suggestions">
<lst name="Dys">
<int name="numFound">3</int>
<int name="startOffset">0</int>
<int name="endOffset">3</int>
<arr name="suggestion">
<str>Hard disk jjdd</str>
<str>Hard disk wd</str>
<str>Hard disk hitachi</str>
</arr>
</lst>
</lst>
</lst>
</response>
?
結(jié)束語(yǔ)?
跟預(yù)期一樣,suggest的結(jié)果是按權(quán)重排序的。這里的大小寫(xiě)敏感(注意首字母).?
你有什么建議呢?如果我們有一個(gè)很好的字典,這個(gè)字典的權(quán)重是基于用戶(hù)的查詢(xún)行為產(chǎn)生的,那么用戶(hù)肯定會(huì)喜歡它!如果沒(méi)有好的字典,還是不要用這種方式的好。?
下一步?
下一期,我們看一下不同方式的suggest產(chǎn)生的索引結(jié)構(gòu)和大小。?
原文URL:http://java.dzone.com/news/solr-and-autocomplete-part-3?mz=33057-solr_lucene?
轉(zhuǎn)載于:https://www.cnblogs.com/ibook360/archive/2011/11/30/2269126.html
總結(jié)
以上是生活随笔為你收集整理的Solr的自动完成实现方式(第三部分:Suggester方式续)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TABCTL32.OCX 文件
- 下一篇: Win7 一键获得管理所有权限(最高权限