2016-11-22 105 views
0

我正試圖在僅包含字符串1604-04的標題中搜索Solr中的術語。但結果會返回任何包含1604或04的結果。語法是什麼將迫使solr搜索1604-04的確切字符串?Solr使用連字符精確搜索

回答

0

您還可以使用經典標記生成器 .The經典標記生成器保留了相同的行爲標準分詞器但下列情況除外: -

字在連字符分割,除非有字的數,在這種情況下,令牌不會被拆分,並且保留數字和連字符(012)。

這意味着如果有人搜索1604-04那麼這個Tokenizer不會將搜索字符串分解爲兩個標記。

+0

謝謝。這個標記器做了訣竅。 – pcroadkill

1

如果只需要精確匹配,請使用字符串字段或帶有KeywordTokenizer的文本字段作爲標記器。這些將令您的令牌保持原樣,並且不會將其分解爲多個令牌。

不同之處在於,如果您將Textfield與KeywordTokenizer結合使用,則仍然可以應用其他過濾器(例如LowercaseFilter),而字符串字段將逐字存儲任何內容,而無需進行任何進一步處理。

+0

非常感謝。它引導我們找到正確的解決方案。我們實際上最終使用了Classic Tokenizer。 – pcroadkill

0

您的分析儀將「1604-04」分爲兩個術語「1604」和「04」。您已經收到關於如何更改分析以停止這樣做的答案。

更改你的分析我不是最好的解決方案(不能完全確定根據你寫的內容)。使用phrase query將是通常的做法。您可以通過在引號包裹它使用短語查詢:

field:"1604-04" 

這仍然將分析,並將其分爲兩個方面,但它會尋找在序列這些條款。所以,該查詢將匹配「1604-04」和「1604 04」,但是而不是「1604某些其他的東西04」。