我和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属性的值,我将无法进行进一步处理,例如替换结果中的文本。 我希望这些信息足够了。请让我知道。我一直试图在这两天内达到最低点。
干杯。
答案 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文件,只放回我所做的具体更改,问题就消失了。我确信这个问题可以追溯到几个特定的界限,因为我必须在练习的最初几天里添加一些内容,这对我来说一直在搞乱。