我正在使用ElasticSearch构建像nexttag.com或thefind.com这样的电子商务搜索引擎。
有些项目如下:
当我们询问"iPhone 6“时,我如何使”苹果iPhone“在顶部,或没有'iPhone案例‘或'iPhone快速指南’。
发布于 2015-03-10 22:04:06
我建议您使用elasticsearch提供的函数评分查询功能。function_score允许您修改查询检索的文档的分数。
简单地说,您要做的是通过使用您提供的自定义函数(或更多的函数)修改每个文档的评分,从而在搜索结果上添加一些后置处理。
您有各种实现得分函数的选项,您的选择应该取决于您的具体情况。
例如,我可以建议您使用field_value_factor函数,它允许您使用文档中的字段来影响得分。这意味着您应该对文档中的boost因子进行索引(例如,在每个文档中添加一个"boost_factor“字段,并将其值设置为1.5,对于cases或其他任何东西设置为1.0 )。这有一个缺点,那就是包括实际数据内部的提升,以及未来的变化将需要重新编制数据索引。
在这种情况下,函数将是
field_value_factor": {
"field": "boost_factor",
"factor": 1.0,
"modifier": "none"
}这将转化为以下评分公式:
1.0 * doc['popularity'].valuehttps://stackoverflow.com/questions/28964293
复制相似问题