solr的suggest模塊


solr的suggest模塊

solr有個suggest模塊,用來實現下拉提醒功能,就是輸入了一個文本之后,進行文本建議查找的功能。

suggest請求的url

http://localhost:8983/solr/hotquestions/suggest?suggest=true&suggest.build=true&suggest.dictionary=mySuggester&wt=json&suggest.q=elec

這里可以看到有幾個參數:

suggest=true

這個參數必須為true,表示我這次請求是suggest請求。

suggest.q

進行查詢建議的文本

suggest.dictionary

搜索組建中詞典的名字,這個參數必須填寫,你可以在請求體中帶上這個參數,也可以在請求參數中帶上。

suggest.count

suggest請求返回的suggest數。

suggest.cfg

這個不是必填的,如果suggester支持,用於內容過濾。

suggest.build

如果設置為true,這個請求會導致重建suggest索引。
這個字段一般用於初始化的操作中,在線上環境,一般不會每個請求都重建索引,如果線上你希望保持字典最新,最好使用buildOnCommit或者buildOnOptimize來操作。

suggest.reload

如果設置為true,會重新加載suggest索引。

suggest.buildAll

如果設置為true,會重建所有suggest索引。

suggest.reloadAll

如果設置為true,會重新加載所有suggest索引。

suggest模塊的配置

<searchComponent name="suggest" class="solr.SuggestComponent">
    <lst name="suggester">
        <str name="name">mySuggester</str>
        <str name="lookupImpl">FuzzyLookupFactory</str>
        <str name="dictionaryImpl">DocumentDictionaryFactory</str>
        <str name="field">cat</str>
        <str name="weightField">price</str>
        <str name="suggestAnalyzerFieldType">string</str>
    </lst>
</searchComponent>

name

suggester的名字,如果設置多個,可以在請求中指定。

lookupImpl

查找方式的具體實現,有幾種方式:

  • AnalyzingLookupFactory: 這個查詢方式先對查詢的輸入文本進行分析,構建出一個FST樹,然后再進行查詢。
  • FuzzyLookupFactory: 這個查詢方式是AnalyzingLookupFactory的擴展,只不過是一種模糊匹配。
  • AnalyzingInfixLookupFactory: 這個查詢方式對輸入的文本進行分析,然后建議出前綴匹配的索引文本。
  • BlendedInfixLookupFactory: 這個查詢方式是AnalyzingInfixSuggester的擴展,這個查詢方式可以為分析后的文本設置一些權重,你可以設置權重正序或逆序。
  • FSTLookupFactory: 基於自動機的查詢。這個方式構建比較慢,但是使用內存更少。除非你需要更復雜的結果,否則就不需要使用這種方式。
  • TSTLookupFactory: 一個簡單的,基於trie樹的查找。
  • WFSTLookupFactory:
  • JaspellLookupFactory:

dictionaryImpl

字典的具體實現,具體有幾種方式:

  • DocumentDictionaryFactory: 一個基於詞語,權重,和一個有效的索引中的負荷。
  • DocumentExpressionDictionaryFactory: 和DocumentDictionaryFactory一樣,但是允許用戶設置復雜的"weightExpression"標簽來設置權重
  • HighFrequencyDictionaryFactory: 允許增加一個閥值來修改返回結果
  • FileDictionaryFactory: 允許使用一個外部的文件來包含建議的結果。權重也是可以在外部文件中有所加載的。
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
  <lst name="defaults">
    <str name="suggest">true</str>
    <str name="suggest.count">10</str>
  </lst>
  <arr name="components">
    <str>suggest</str>
  </arr>
</requestHandler>

suggest的handler,主要設置了建議返回的默認個數,默認使用的suggest組件等。

參考文章

官方文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM