簡體   English   中英

Solr 查詢/字段分析器

[英]Solr query/field analyzer

我完全是 Solr 的初學者,並且遇到了不需要的字符進入查詢結果的問題。 例如,當我搜索“foo bar”時,我得到了“'foo' bar”等內容。我只想精確匹配。 據我所知,這可以在 schema.xml 文件中設置。 我的內容字段類型:

<fieldtype name="textNoStem" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <filter class="solr.LowerCaseFilterFactory" />
        <tokenizer class="solr.KeywordTokenizerFactory" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
</fieldtype>

如果您知道解決方案,請告訴我。 親切的問候。

對於這兩個分析器,第一行應該是分詞器。 分詞器用於將文本拆分為更小的單元(大多數情況下是單詞)。 根據您的需要, WhitespaceTokenizerFactory可能是正確的選擇。

如果您想要絕對精確匹配,則在分詞器之后不需要任何過濾器。 但是,如果您不希望搜索區分大小寫,則需要添加一個LowerCaseFilterFactory

請注意,您有兩個分析器:一個是“索引”類型,另一個是“查詢”類型。 顧名思義,第一個用於索引內容,而另一個用於查詢。 幾乎總是好的規則是為兩個分析器使用相同的標記器/過濾器集。

如果您只想精確匹配,請在查詢時使用 KeywordTokenizerFactory 而不是 StandardTokenizerFactory。

我猜您不會得到任何結果,因為標記對已編入索引的數據的處理方式不同。 正如 Pascal 所說, whitespaceTokenizer 是您的正確選擇。 在索引和查詢時都使用它,並在索引一些數據后檢查結果,而不是之前索引的數據。

我建議使用分析頁面查看結果而不實際索引。它非常有用。更改架構,刷新核心,轉到分析頁面並查看詳細輸出以獲取分步分析。

暫無
暫無

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

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