基于 solr 字段向搜索结果添加变体
Add variation to the Search Results based on a solr field
我有一个包含一组值的 solr 字段。在 solr 中是否有可能根据该字段改变 return 结果。
例如:我的字段包含 "ValueA"、"ValueB" 和 "ValueC"。因此,如果行设置为 3,那么不是 returning 来自 "ValueA" 的所有结果,它应该从每个字段值中给我一个(考虑到它们具有相同的分数)
您可能想使用 Result Grouping / Field Collapsing
或 CollapsingQParserPlugin.
CollapsingQParserPlugin 更新(自 Solr 4.6 起),速度更快,更适合您的问题,我猜,因为它不会影响结果的结构。
只需将此添加到您的 solrconfig.xml:
<queryParser name="collapse" class="org.apache.solr.search.CollapsingQParserPlugin"/>
然后您可以通过在查询中添加以下参数来折叠结果:
fq={!collapse field=my_field}
或在 Solrj 中:
solrQuery.addFilterQuery("{!collapse field=my_field}");
Collapsing的意思是:对于my_field
中的每个值,它只保留结果集中得分最高的文档。
我有一个包含一组值的 solr 字段。在 solr 中是否有可能根据该字段改变 return 结果。 例如:我的字段包含 "ValueA"、"ValueB" 和 "ValueC"。因此,如果行设置为 3,那么不是 returning 来自 "ValueA" 的所有结果,它应该从每个字段值中给我一个(考虑到它们具有相同的分数)
您可能想使用 Result Grouping / Field Collapsing 或 CollapsingQParserPlugin.
CollapsingQParserPlugin 更新(自 Solr 4.6 起),速度更快,更适合您的问题,我猜,因为它不会影响结果的结构。
只需将此添加到您的 solrconfig.xml:
<queryParser name="collapse" class="org.apache.solr.search.CollapsingQParserPlugin"/>
然后您可以通过在查询中添加以下参数来折叠结果:
fq={!collapse field=my_field}
或在 Solrj 中:
solrQuery.addFilterQuery("{!collapse field=my_field}");
Collapsing的意思是:对于my_field
中的每个值,它只保留结果集中得分最高的文档。