3

我目前正在使用由大约 10 个字段组成的 Solr 索引数据。当我执行搜索时,我希望某些字段的权重更高。谁能帮我指出正确的方向?

例如,在所有字段中搜索诸如“超人”之类的词应该在“ Title”字段之前返回“”字段中的命中Description

我找到了有关如何使查询中的一个字段得分更高的文档,但我更愿意将其设置在配置文件或类似文件中。以下将要求所有搜索指定权重。可以在solr config文件中指定吗?

q=title:superman^2 description:superman
4

3 回答 3

5

尝试将qf 与 ExtendedDisMax 一起使用,您的查询将如下所示:

q=superman

虽然您的配置看起来像:

<str name="qf">title^2 description</str>

你可以在这里得到一些工作示例

于 2013-08-02T21:48:06.167 回答
3

qf 参数引入了一个字段列表,每个字段都分配了一个提升因子,以增加或降低该特定字段在查询中的重要性。例如,下面的查询:

qf="fieldOne^2.3 fieldTwo fieldThree^0.4"

为 fieldOne 分配 2.3 的提升,将 fieldTwo 保留为默认提升(因为未指定提升因子),并将 fieldThree 提升为 0.4。这些提升因素使得 fieldOne 中的匹配比 fieldTwo 中的匹配更重要,而 fieldTwo 中的匹配又比 fieldThree 中的匹配更重要。”

来源:Apache Lucene

在您的情况下:qf="title^100 description"可能会奏效-如果您在我想聊天的库中使用 Solr。

于 2013-08-06T21:26:56.143 回答
0

通过使用edismax,我们可以实现您想要的。

尝试通过更改字段在请求处理程序中添加这两个字段。如果您不想要某个特定字段,您可以完全删除它。

<str name="defType"> edismax </str>
<str name="qf"> YourField^50 YourAnotherField^30 YetAnotherField</str>

power(^) 增加的越多,该字段的优先级就越高。

于 2013-08-04T06:54:38.580 回答