簡體   English   中英

對 SOLR 搜索執行完全匹配

[英]Performing EXACT match on SOLR search

我正在實施 SOLR 搜索。 當我輸入例如 Richard Chase 時,我會得到索引中的所有 Richards 和所有 Chases,例如 Johnny Chase 等。實際上我只想返回與 Richard 和 Chase 匹配的所有名稱。

我的配置設置是

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

我的查詢搜索文本字段

文字:理查德·蔡斯

任何想法我做錯了什么?

您正在使用StandardTokenizerFactory ,它遵守Word Boundary 規則

這意味着您的單詞會在空格上分開。

如果你想要一個真正的完全匹配,即

Richard Chase要返回僅包含Richard Chase文檔,那么您應該使用KeywordTokenizerFactory

但正如你提到的,你想要Richard John Chase而不是Johnny Chase ,它告訴我你想要 RichardChase 的匹配。

您可以搜索Richard AND Chase或將schema.xml的默認運算符更改為AND而不是OR 請注意,此設置是全局設置。

您必須使用 PhraseQuery ( text:"Richard Chase" ) 來獲取RicahardChase彼此靠近的文檔。 如果您還想找到Richard X. Chase您可以使用text:"richard chase"~1

請參閱http://www.solrtutorial.com/solr-query-syntax.html

對於完全匹配,您可以在 solrconfig.xml 中將查詢解析器的 mm(Minimum "Should" Match) 參數設置為 100%

<str name="mm">100%</str>

這指定了查詢中必須匹配的最小子句數。 或者您可以在請求中的查詢時間覆蓋此參數 (q.mm)

另一種選擇是使用copyField到的值復制text到一個string類型的字段,

<field name="text_orig" type="string" />
<copyField source="text" dest="text_orig" maxChars="1024"/>

當您只需要進行完全匹配時,請在查詢中使用text_orig字段:

text_orig:"Richard Chase"

由於字符串類型不會被分析並按原樣存儲,因此只有精確的查詢才能匹配它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM