2014-09-30 44 views
0

我有一個多值插圖字段,這些插頁項可以有多項,例如 當我搜索「foo-45」時,只有最後一個導管「foo-456」應該是高亮度的,而不是字符串「foo-456」 foo「將在所有三個文章中被高舉。SOLR如何在多值字段中僅突出顯示多項匹配項

我可以使用哪種熒光筆?如何配置熒光筆以突出顯示所有查詢字詞匹配的匹配項?

這是我的領域的定義和類型:

<field name="cathegory_field" type="cathegory_field_type" indexed="true" stored="true" multiValued="true" /> 

<fieldType class="solr.TextField" name="cathegory_field_type"> 
    <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" splitOnCaseChange="0" catenateWords="1" catenateNumbers="1" catenateAll="1"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.WordDelimiterFilterFactory" splitOnCaseChange="0"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 
+1

這可能是由於該領域的分析。你介意分享該領域的領域類型嗎? – ameertawfik 2014-09-30 18:20:05

+0

感謝您的建議,我在字段 – MrLang 2014-10-01 08:01:18

回答

0

我只是想在我的機器,WordDelimiterFilterFactory創建兩個令牌(foo和456)。

在我看來,你可以做的一件事是從查詢分析中刪除WordDelimiterFilterFactory

另一種解決方案是使用另一個字段來突出顯示;在那裏你不使用WordDelimiterFilterFactory。下面是一個簡單的定義:

<fieldType class="solr.TextField" name="text_cat_hl"> 
<analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" splitOnCaseChange="0" catenateWords="1" catenateNumbers="1" catenateAll="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 

然後創建一個新的領域:

<field name="cat_hl" type="text_cat_hl" indexed="true" stored="true" multiValued="true" /> 

您需要category_field的內容複製到:

<copyField source="cathegory_field" dest="cat_hl"/> 

最後,你發出這樣的查詢:

http://127.0.0.1:8983/solr/collection1?select?q=cathegory_field:foo-456&hl.q=cathegory_hl:foo-456 
+0

上面添加了字段及其類型,但是當我搜索帶下劃線的「456 foo」或「foo_456」時,我什麼都找不到。 也許只有在所有查詢條件匹配時,纔有可能僅保留多值字段的結果。 – MrLang 2014-10-02 12:56:02