gpt4 book ai didi

java - 在 SOLR 中使用带有短语字段的一元语法

转载 作者:行者123 更新时间:2023-12-01 12:39:30 24 4
gpt4 key购买 nike

我正在使用 solr 来搜索文档并在一个字段上进行匹配,然后希望根据其他字段中出现的关键字进行提升。

例如。

<str name="qf">
name^1
</str>
<str name="pf">
keywords1^2
keywords2^1.2
description^0.2
</str>

所以如果我搜索

q=foo+bar

我得到了结果

name = "This is a foo bar"
keywords1 = "bar"
keywords2 = "foo cats dogs chicken"
description = "There is a foo in here with a bar"

查询从描述中获得提升,但没有从 keywords1 和 keywords2 中获得提升。我知道这是因为 pf 在 keywords1 中搜索“foo bar”(带有短语 slop),而不是“foo”“bar”。我想根据个别单词进行提升。没有插件可以实现吗?

我想到的事情:

我知道 pf2 和 pf3 等选项,但基本上我要寻找的是 pf1。我希望能够提高单个单词的能力。

我不只是将 keywords1、keywords2 添加到 qf 的原因是我不希望它们匹配。由于关键字二有一些术语可能与文档无关。

我可以在查询时分解查询并使用 bq

bq = keywords1:foo OR keywords1:bar etc...

但是我想为不同的字段分配不同的权重,这对于构建查询来说很麻烦。

总之,我想要一个 pf1 参数。

最佳答案

我查看了 SOLR 源代码,发现向 edismax 查询解析器添加 pf1 参数相当简单 - pf2 和 pf3 使用可以为 pf1 调用的更通用函数。但是我真的不想从源代码重新编译 solr。我已经使用嵌套查询解决了这个问题。

我现在有

<str name="qf">
name^1
keywords1^2
keywords2^1.2
description^0.2
</str>

我的查询现在看起来像

q=(foo bar) AND _query_:"{!edismax qf='name'}foo bar"

所以我得到了第一个查询的所有提升,但我限制了名称。

关于java - 在 SOLR 中使用带有短语字段的一元语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25252783/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com