我正在使用Solr和edismax解析器搜索产品数据库,我希望在某些字段中点击其他字段的点击次数。 假设每个产品都有一个名称和一个 short_description ,还有其他可能是动态的字段。应该搜索所有字段,但 name 和 short_description 应该比其他字段更重要(或更少)。
我知道这可以在查询时使用 qf 参数(Documentation)完成。 我可以看到它有效。根据提供的字段,文档可以上下得分。
问题是我显然需要提及要搜索的所有字段,其他字段可能是动态的。也许我可以以某种方式得到所有相关领域并发送它们,但我更喜欢在索引时的解决方案。
我继承了这个代码,代码正在做的是将以下JSON发送到索引:
{
"add": {
"boost": 1,
"doc": {
(...)
"name": {
"boost": 0.3,
"value": "product name #1"
},
(...)
"short_description": {
"boost": 3,
"value": "some text"
},
我希望 short_description 中的点击值增加值为3,名称中的点击量增加0.3,即与其他所有值相比得分(默认值)文件价值1)。
如果 name 中匹配的文档与 short_description 中匹配的文档的得分相同。
(搜索 mordor )
{
(...)
"name": "mordor",
"short_description": "this is a random description",
(...)
"score": 3.5821834
},
{
(...)
"name": "this is a random description",
"short_description": "mordor",
(...)
"score": 3.5821834
}
我发现this document说:
如果在每个文档上设置索引时间字段提升都没有价值。
这是为什么它不起作用?或者我做错了什么? 如果它不是那样工作,有没有办法在查询时输入类似通配符的东西到 qf 参数(即 qf = name ^ 3 short_description ^ 0.3 * )?