[英]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.