Mic*_*out 5 sorting solr multivalue
我们正在考虑具有两个多值字段的模式.搜索在第一个字段上执行,但应使用相应的值在第二个字段上进行排序.例如,如果文档由于第一个字段中的第n个值(其中n对于每个匹配可能不同)而匹配,那么它们应该被返回,并按第二个字段中的第n个值排序.
那可能吗?
背景:每个文档都有一个类似文档列表(ID)和相应的相似性得分列表(0到1之间的值).给定ID 42,我们需要返回所有类似文档(例如,在第一个字段中具有42的文档),按照它们与文档42的相似性排序.
我们正在考虑的其他模式是:
该方法不会成功,因为您可以搜索,但无法按多值字段排序。这在 Solr 中使用多值字段排序中指出并在 Solr 的 Wiki 中编写
可以对文档的“分数”进行排序,也可以对任何 multiValued="false" indexed="true" 字段进行排序,前提是该字段是非标记化的(即:没有分析器)或使用仅生成单个术语(即:使用 KeywordTokenizer)
更新
关于替代方案,正如您指出的那样,您需要为一个给定的 ID 查找类似的文档,为什么不创建具有类似模式的第二个核心
<fields>
<field name="doc_id" type="int" indexed="true" stored="true" />
<field name="similar_to_id" type="int" indexed="true" stored="true" />
<field name="similarity" type="string" indexed="true" stored="true" />
</fields>
<types>
<fieldType name="int" class="solr.TrieIntField"/>
<fieldType name="string" class="solr.StrField" />
</types>
Run Code Online (Sandbox Code Playgroud)
然后您可以在执行实际搜索后进行第二次查询
q=similar_to_id=42&sort=相似度
| 归档时间: |
|
| 查看次数: |
8234 次 |
| 最近记录: |