[英]Solr synonym graph filter not working after other filter
我正在嘗試將15.6"
搜索轉換為15.6 inch
。這個想法是首先將15.6"
替換為15.6 "
,然后將"
與同義詞規則" => inch
匹配。我創建了類型定義:
<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern='^([0-9]+([,.][0-9]+)?)(")$' replacement="$1 $3" />
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" />
</analyzer>
</fieldType>
但它不起作用! 如果我輸入15.6"
我得到15.6 "
,但是當我輸入15.6 "
我得到我想要的 - 15.6 inch
。
為什么不起作用? 我錯過了什么嗎?
編輯:
問題是15.6 "
在您的模式替換過濾器之后仍然是單個標記 - 僅創建一個帶有空格的標記不會將其拆分。
您可以看到它仍然保留為單個令牌,因為沒有|
在線(分隔令牌)。
在它之后添加一個 Word Delimiter Filter(從您的分析鏈看來,您已經有了一個,它只是沒有包含在您的問題中),或者更好的是,在分詞器獲得將輸入拆分為的任務之前在PatternReplaceCharFilterFactory
進行替換單獨的令牌:
<analyzer>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern='^([0-9]+([,.][0-9]+)?)(")$' replacement="$1 $3" />
<tokenizer ...>
您可能需要根據您的輸入(因為它現在將應用於整個輸入字符串 - 確保"Macbook 15.6" 256GB" 適當匹配)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.