如何避免在solr中的分面搜索中拆分字段值

时间:2013-09-10 13:23:59

标签: solr

在基于构面的搜索中,在搜索结果中,doc元素的字段值为字符串形式(多于单词),但在构面中,每个值都是字符串形式的单个字。 以下是样本搜索结果搜索结果

<result>
   <doc>
       <str name="fieldA">abc1 efg1 ijk1</str>
       <str name="fieldA">abc2 efg2 ijk2</str>
       <str name="fieldA">abc3 efg3 ijk3</str>
       <arr name="fieldD">
           <str>abc1 efg1 ijk1</str>
           <str>abc2 efg2 ijk2</str>
           <str>abc3 efg3 ijk3</str>
       </arr>
   </doc>
</result>
<lst name="facet_counts">
    <lst name="facet_queries">
       <int name="fieldB:ab">some_number</int>
    </lst>
    <lst name="facet_fields">
       <lst name="fieldA">
            <int name="abc1">1</int>   I want <int name="abc1 efg1 ijk1">1</int>
            <int name="efg1">1</int>
            <int name="ijk1">1</int>
       </lst>   
    </lst>
</lst>

Schema.xml包含字段 - fieldA,fieldB,fieldC和fieldD,如下所示

  <field name="fieldA" type="text_general" stored="true" indexed="true"/>
  <field name="fieldB" type="text_general" stored="true" indexed="true"/>
  <field name="fieldC" type="text_general" stored="true" indexed="true"/>
  <field name="fieldD" type="text_general" stored="true" indexed="true"/>

  <copyField source="fieldA" dest="fieldD"/>
  <copyField source="fieldB" dest="fieldD"/>
  <copyField source="fieldC" dest="fieldD"/>

我想要多个字符串的facet值,就像字段值中多个单词的字符串一样。请建议。

1 个答案:

答案 0 :(得分:13)

您必须将字段类型从type="text_general"更改为type="string"才能进行构面搜索。

如果您不能为该字段执行此操作,则可以创建一个新的字符串字段(可以是一个复制字段),然后在该字段上应用该方面。