0

我有一个 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>

我想执行一个查询,以找到与搜索“Rebert De Niro”和“Edward Norton”和“Ben Stiller”最接近的匹配项

复杂性在于,没有一个项目包含所有提到的 3 个标签,但最接近的是具有 3 个标签中的 2 个的第二个项目。

我不想执行手动排列组合查询,因为如果我一次搜索多个标签,它会变得复杂。

4

1 回答 1

1

请参阅mm(e)dismax 中可用的参数(最小匹配)。这使您可以说出应该匹配的子句数,或必要的最小匹配数。只要您指定 AND,您将要求所有子句都存在。

您还可以指定 OR - 匹配更多术语的文档应该自动获得更高的 iirc 评分。请参阅 debugQuery 以了解如何计算每个匹配项的得分。

于 2013-08-15T20:55:19.397 回答