日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

Solr的自动完成实现方式(第三部分:Suggester方式续)

發(fā)布時(shí)間:2025/3/19 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Solr的自动完成实现方式(第三部分:Suggester方式续) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  在之前的兩個(gè)部分(part1、part2)中,我們學(xué)會(huì)了如何配置和查詢(xún)solr來(lái)獲取自動(dòng)完成的功能。今天,我們來(lái)看一下如果為suggester添加字段,以這種方式來(lái)提供自動(dòng)完成的功能。?
?

組件配置?
在上一期的配置組件中添加如下的參數(shù):

<str name="sourceLocation">dict.txt</str>

這樣我們的配置就變成了:?

<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ù):

<str name="spellcheck.onlyMorePopular">true</str>

?

完整的配置為:?

<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è)例子:?

# sample dict
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)行情況,輸入命令:?

/suggest?q=Har

得到的結(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)和大小。?

原文URLhttp://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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。