确实晚了,但在 Solr 6.0 中,最重要的答案对我来说不起作用,因为我试图在多值字段上添加重复条目。它之前就缺少处理器UniqFieldsUpdateProcessorFactory。因此,将这样的内容添加到我的 solrconfig.xml 中是有效的:
<updateRequestProcessorChain name="uniq-fields">
<processor class="org.apache.solr.update.processor.DistributedUpdateProcessorFactory"/>
<processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory">
<str name="fieldName">YourFieldA</str>
<str name="fieldName">yourFieldB</str>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
Run Code Online (Sandbox Code Playgroud)
其中 YourFieldA 和 YourFieldB 是 schema.xml 中定义的字段。请注意,您还必须将其添加到正确的requestHandler即:
<requestHandler name="/update" class="solr.UpdateRequestHandler" >
<lst name="defaults">
<str name="update.chain">uniq-fields</str>
</lst>
Run Code Online (Sandbox Code Playgroud)
这不仅可以防止添加重复项,还可以在更新指定字段时从索引中删除所有重复项。
我在努力实现同样的目标。这对我有用。将以下处理器添加到您的solrconfig.xml中
<updateRequestProcessorChain name="deduplicateMultiValued" default="true">
<processor class="org.apache.solr.update.processor.UniqFieldsUpdateProcessorFactory">
<lst name="fields">
<str>multivaluedFieldXYZ</str>
</lst>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>
Run Code Online (Sandbox Code Playgroud)
您需要在客户端处理它以删除重复的值。
您可以自定义实现,例如RemoveDuplicatesTokenFilterFactory(适用于相同位置的相同文本)来过滤掉标记。基本上写一个扩展。或者
另外,如果仅使用多值字段进行分面,则分面字段中的值仅计算一次。因此,即使您添加多个相同的值,也会在构面计数条目中反映为单个值。已经测试过了。你也可以确认。
然而,重复的值会导致 lengthNorm 的变化,从而影响评分。
| 归档时间: |
|
| 查看次数: |
4387 次 |
| 最近记录: |