簡體   English   中英

Solr同義詞圖過濾器在其他過濾器后不起作用

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

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