日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2025/3/19 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Solr的自动完成实现方式(第三部分:Suggester方式续) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  在之前的兩個部分(part1、part2)中,我們學會了如何配置和查詢solr來獲取自動完成的功能。今天,我們來看一下如果為suggester添加字段,以這種方式來提供自動完成的功能。?
?

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

<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>

使用這個參數,我們讓suggest組件使用名叫dict.txt的文件作為solr的配置字典。?


handler配置?
handler
的配置也需要添加額外的一個參數:

<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>

這個參數告訴solr,當查詢的結果數多于設定的count數時,返回點擊數更多的那些。?


Dictionary?
我們告訴solr來使用這個字段,那么這個字段長的什么樣呢?下面來看一個例子:?

# sample dict
Hard disk hitachi
Hard disk wd 2.0
Hard disk jjdd 3.0


這個字典的結果是什么樣的呢?每個詞組放在單獨的一行中,每行以改詞組的權重為結束(權重與詞組之間以TAB字符分隔),這個權重就是跟spellcheck.onlyMorePopular=true?香港的參數,默認值為1.0。該字段必須以UTF-8的編碼格式存儲。每行前有#字符的將被忽略(注釋行)?

數據?
以這種方式,我們不需要數據,字段就是數據。?

運行?
在重新構建suggester之后,我們來看一下它的運行情況,輸入命令:?

/suggest?q=Har

得到的結果為:?

<?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>

?

結束語?
跟預期一樣,suggest的結果是按權重排序的。這里的大小寫敏感(注意首字母).?

你有什么建議呢?如果我們有一個很好的字典,這個字典的權重是基于用戶的查詢行為產生的,那么用戶肯定會喜歡它!如果沒有好的字典,還是不要用這種方式的好。?

下一步?
下一期,我們看一下不同方式的suggest產生的索引結構和大小。?

原文URLhttp://java.dzone.com/news/solr-and-autocomplete-part-3?mz=33057-solr_lucene?


轉載于:https://www.cnblogs.com/ibook360/archive/2011/11/30/2269126.html

總結

以上是生活随笔為你收集整理的Solr的自动完成实现方式(第三部分:Suggester方式续)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。