2017-05-29 68 views
0

是否可以將Solr字段配置爲具有多個/拆分的過濾器鏈?例如,我可以創建一個過濾器鏈,看起來像這樣?:單個Solr字段的多個/拆分過濾器鏈

 StandardTokenizer 
       ↓ 
     LowerCaseFilter 
      ↙   ↘ 
    SynonymnFilter PhoneticFilter  
     ↓ 
    NGramFilter 

我已經做了相當多的搜索,並沒有發現建立一個過濾鏈這樣的任何例子。

EDIT

主要原因我想要這樣做在單個字段中的上下文中(而不是索引數據兩次使用一個副本field)是用於突出。如果我使用一個副本領域上運行同樣的數據不同的過濾器鏈,我強調結果回來是這樣的:

"highlighting":{ 
    "1234": { 
    "firstName_phonetic":["<hl>John</hl>"], 
    "firstName_ngram":["<hl>John</hl>"] 
    } 
} 

這使得消費的結果有點難度爲消費應用需求來選擇其中強調字段來顯示。理想情況下,我會回到這樣的東西:

"highlighting":{ 
    "1234": { 
    "firstName":["<hl>John</hl>"] 
    } 
} 

回答

1

一個過濾器的輸出轉到鏈中的下一個過濾器。沒有支持「分支」。

如果您想要自定義過濾器,您將實現此方法。

org.apache.lucene.analysis.TokenStream.incrementToken() 

該方法返回一個布爾值。你可以看到一個例子here

另一種可能的解決方案是使用一個對copyField和firstName_phonetic爲firstName_ngram響應合併成firstName和使用hl.fl =名字

1

這聽起來是合理的,只是使用copyField和索引兩個不同的領域,每個領域都有自己的鏈。

但是,我想什麼都不能阻止你實現你自己的MyCustomFilter來完成你所需要的,然後你將它插入你的conf。

+0

感謝。我想要做到這一點的主要原因是保持字段突出顯示(我將這添加到我的問題)。我沒有嘗試過,但我假設如果一個查詢只在複製字段匹配,原始字段不會有任何突出顯示應用? –