solr突出显示结果 - <lst>节点不包含name属性</lst>

时间:2012-11-29 13:34:01

标签: solr

我和solr玩了大约一个星期了。我的问题可能是一个罕见的案例,与突出显示有关,因为我无法在SO或任何地方找到解决方案。

我启用了突出显示功能,几乎所有功能都正常 - 我收到了搜索结果,并在<lst name="highlighting">中返回了突出显示的部分。

问题是,实际包含文本突出显示部分的子节点都没有name属性,该属性应该与相应结果项的id属性相同。

以下是使用solr admin从搜索返回的结果的摘录。

<result name="response" numFound="121" start="0" maxScore="2.3798883">
   <doc>
     <float name="score">2.3798883</float>
     <str name="Turn">Android Linux</str>
     <str name="id">dcc190ba-143b-4fb7-b868-ef06875210fe</str>
     <float name="startTime">961.98</float>
   </doc>
   <doc>
     <float name="score">1.009701</float>
     <str name="Turn">
       ci sono per� degli aspetti diversi perch� Microsoft vendeva windows mentre l' Ugl     regala Android che quindi la licenza Android non costa nulla
    </str>
    <str name="id">804df3fb-3709-4bf8-a0d0-718dc5da18f1</str>
    <float name="startTime">2445.19</float>
  </doc>
</result>
<lst name="highlighting">
  <lst>
    <arr name="Turn">
      <str><span class="highlight">Android</span> Linux</str>
    </arr>
  </lst>
  <lst>
   <arr name="Turn">
     <str>ci sono per degli aspetti diversi perch Microsoft vendeva windows mentre l' Ugl     regala <span class="highlight">Android</span>
     </str>
   </arr>
  </lst>
  <lst>
    <arr name="Turn">
     <str><span class="highlight">Android</span> nd Kappa e l' ambiente che ci permette di     scrivere in codice in attivo
     </str>
    </arr>
  </lst>
</lst>

可以看出,每个结果都有id属性。只是它没有在节点中使用。

我正在使用uuid类型作为由solr自动生成的id。

这是我的schema.xml文件的一部分。

<field name="id" type="uuid" indexed="true" stored="true" required="true" default="NEW"/>
<field name="startTime" type="float" indexed="true" stored="true" />
<field name="Turn" type="text_general" indexed="true" stored="true"/>

fieldType uuid在schema.xml文件中定义如下:

<fieldType name="uuid" class="solr.UUIDField" indexed="true" />

以下是生成id的更新处理器(在solrconfig.xml中):

 <updateRequestProcessorChain name="uuid">
   <processor class="solr.processor.SignatureUpdateProcessorFactory">
     <bool name="enabled">true</bool>
     <str name="signatureField">id</str>
     <bool name="overwriteDupes">false</bool>
     <str name="fields">*</str>
     <str name="signatureClass">solr.processor.Lookup3Signature</str>
   </processor>
   <processor class="solr.LogUpdateProcessorFactory" />
   <processor class="solr.RunUpdateProcessorFactory" />
 </updateRequestProcessorChain>

如果没有id作为项目中name属性的值,我将无法进行进一步处理,例如替换结果中的文本。 我希望这些信息足够了。请让我知道。我一直试图在这两天内达到最低点。

干杯。

2 个答案:

答案 0 :(得分:2)

我和你有同样的问题。唯一不同的是,我开始了一个新的solr实例。所以我没有原创回去。

我通过用&#39;字符串&#39;替换id类型来修复它。并在数据中添加自定义唯一键。我还在配置中添加了唯一的键元素。

<uniqueKey>id</uniqueKey>
<field name="id" type="string" indexed="true" stored="true" required="true" />

这解决了我的问题。不知何故,它不适用于“uuid”类型。

希望这有助于任何人遇到同样的问题。

注意:uniqueKey字段应位于&#39;字段之外&#39;节点

答案 1 :(得分:0)

在另一个绝望的尝试让它工作,我用原始文件替换了我的solrconfig.xml文件,只放回我所做的具体更改,问题就消失了。我确信这个问题可以追溯到几个特定的​​界限,因为我必须在练习的最初几天里添加一些内容,这对我来说一直在搞乱。