我有一個多值solr字段,它只用於過濾搜索結果。該字段包含多個組,並且如果用戶屬於這些組中的一個,則該文檔將在他的搜索中被重新使用。具有數萬個值的Solr字段
<field name="group" type="string" indexed="true" multiValued="true" stored="false"/>
由於我有數以萬計的組,因此會導致性能問題。 有沒有更好的方法來處理這個值比multivalued fields
多?
我有一個多值solr字段,它只用於過濾搜索結果。該字段包含多個組,並且如果用戶屬於這些組中的一個,則該文檔將在他的搜索中被重新使用。具有數萬個值的Solr字段
<field name="group" type="string" indexed="true" multiValued="true" stored="false"/>
由於我有數以萬計的組,因此會導致性能問題。 有沒有更好的方法來處理這個值比multivalued fields
多?
解決這個問題的一種可能的方法是將數據轉換爲每個值周圍都有自定義字符的單個字段,例如。如果組包含group1,group2,group3作爲多值數據,則將它們轉換爲包含單個值「|| group1 || || group2 || || group3 ||」的單個字段(雙管道是自定義字符)。然後,可以在查詢時使用與組名相同的自定義字符,例如ex fq = group:「|| group1 ||」在group1上過濾。如果選擇此方法,請確保將字段類型更改爲支持部分匹配和空格標記器的字段類型。
我不確定這是否會提高性能。但我建議嘗試增加
maxFieldLength (if you are using <solr4.x)
這是如果你正在使用Solr的4.X或更新Solr中取出4.0, 嘗試包括過濾器的字段類型定義,並增加maxTokenCount值。 <filter class="solr.LimitTokenCountFilterFactory" maxTokenCount="10000"/>