我有一个多值solr字段,仅用于过滤搜索结果。此字段包含许多组,如果用户属于其中一个组,则此文档将在其搜索结果中。
<field name="group" type="string" indexed="true" multiValued="true" stored="false"/>
由于我有成千上万的组,这会导致性能问题。
有没有更好的方法来处理具有这么多值的字段而不是multivalued fields
?
答案 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)