我目前正在使用包含大约10个字段的Solr索引数据。当我执行搜索时,我希望某些字段的权重更高。任何人都可以帮助我指出正确的方向吗?
例如,在所有字段中搜索“超人”等字词时,应在“Title
”字段之前的“Description
”字段中返回匹配。
我找到了有关如何从查询中提高一个字段得分的文档,但我更愿意在配置文件或类似文件中设置它。以下内容要求所有搜索都指定权重。是否可以在solr config
文件中指定它?
q=title:superman^2 description:superman
答案 0 :(得分:4)
尝试使用qf with ExtendedDisMax您的查询,然后看起来像这样:
q=superman
虽然您的配置如下所示:
<str name="qf">title^2 description</str>
您可以获得一些有用的示例here
答案 1 :(得分:3)
qf参数引入了一个字段列表,每个字段都分配了一个提升因子,以增加或减少特定字段在查询中的重要性。例如,下面的查询:
qf="fieldOne^2.3 fieldTwo fieldThree^0.4"
指定fieldOne增加2.3,将fieldTwo保留为默认增强(因为没有指定增强因子),而fieldThree增加0.4。这些提升因素使fieldOne中的匹配比fieldTwo中的匹配更重要,而fieldTwo中的匹配比fieldThree中的匹配更重要。“
在你的情况下:qf="title^100 description"
可以解决问题 - 如果你在图书馆中使用Solr,我很乐意聊天。
答案 2 :(得分:0)
通过使用edismax,我们可以实现您所寻找的目标。
尝试通过更改字段在请求处理程序中添加这两个字段。 如果您不想要,可以完全删除特定字段。
<str name="defType"> edismax </str>
<str name="qf"> YourField^50 YourAnotherField^30 YetAnotherField</str>
功率(^)越多,该字段获得的优先级越高。