具有数万个值的Solr字段

时间:2016-04-21 14:11:40

标签: solr multivalue

我有一个多值solr字段,仅用于过滤搜索结果。此字段包含许多组,如果用户属于其中一个组,则此文档将在其搜索结果中。

<field name="group" type="string" indexed="true" multiValued="true" stored="false"/>

由于我有成千上万的组,这会导致性能问题。 有没有更好的方法来处理具有这么多值的字段而不是multivalued fields

2 个答案:

答案 0 :(得分:0)

处理此问题的一种可能方法是将数据转换为单个字段,每个值周围都有自定义字符,例如。如果组包含group1,group2,group3作为多值数据,则将它们转换为包含单个值&#34; || group1 ||的单个字段||组2 || || ||组3&#34; (双管是自定义字符)。然后,您可以在查询时使用围绕组名称的相同自定义字符,例如ex fq = group:&#34; || group1 ||&#34;过滤group1。如果选择此方法,请确保将字段类型更改为支持部分匹配和空白标记化的字段类型。

答案 1 :(得分:0)

我不确定这是否会提高性能。但我建议尝试增加

public string ABC(object obj)
{
     ClassA a = obj as ClassA;
     ClassB b = obj as ClassB;

     // Now if you want to access Var1, Var2 you can access them
     // using "obj" reference, because T is IDestination
     string var1 = obj.Var1;
     string var2 = obj.Var2;

     if(a != null) 
     {
         // Here access all ClassA members...
     }

     if(b != null)
     {
         // Here access all ClassB members...
     }

     return "";
}

如果您使用的是Solr 4.X或更高版本,则会在Solr 4.0中删除 尝试包括用于fieldType定义的过滤器并增加maxTokenCount值。 maxFieldLength (if you are using <solr4.x)