我有一个solr索引,用多个标签索引项目(多值)
例如:
<item>
<name>America x</name>
<id>1</id>
<tags>
<tag>Edward Norton</tag>
<tag>Beverly D'Angelo</tag>
<tag>Ethan Suplee</tag>
</tags>
</item>
<item>
<name>The score</name>
<id>2</id>
<tags>
<tag>Robert De Niro</tag>
<tag>Edward Norton</tag>
<tag>Marlon Brando</tag>
</tags>
</item>
我想执行一个查找最匹配搜索的查询&#34; Rebert De Niro&#34; AND&#34; Edward Norton&#34; AND&#34; Ben Stiller&#34;
复杂性是,没有一个项目包含所有提到的3个标签,但最接近的是具有2个标签中的2个标签的第二个项目。
我不想执行手动置换组合查询,因为如果我一次搜索多个标签,它会变得复杂。
答案 0 :(得分:1)
参见(e)dismax中可用的mm
参数(最小匹配)。这允许您说出应该匹配的子句数,或者必要的最小匹配数。只要您指定AND,就会要求所有子句都存在。
你也可以指定OR - 匹配更多术语的文档应该自动得分更高的iirc。请参阅debugQuery以了解如何计算每个匹配的评分。