我正在开发一个基于Spring的网站,我需要使用搜索引擎来提供“自定义”搜索结果。我正在考虑Solr或Elastic。
这就是我所说的“自定义”。
假设我有两个要搜索的字段A和B.
假设有两个访问者,我可以通过跟踪他们的活动来对他们进行分析。假设访问者1经常使用或搜索值a(A)和访问者2值b(B)。现在两个访问者都搜索满足A = a OR B = b的记录。
对于访问者1和2,Solr或Elastic返回的结果会有不同的顺序吗?我的意思是,例如,A = a的结果仅领先于访问者1的B = b结果?与访客2相反?
我知道我需要将一些信号传递给搜索引擎,要求引擎给其中一个字段增加“重量”。
谢谢和问候。
答案 0 :(得分:1)
看起来您只需要对要查询的字段赋予不同的权重,具体取决于正在执行查询的用户。
例如,您可以使用带弹性搜索的multi_match查询,该搜索允许您搜索多个字段,同时为它们提供不同的权重。以下示例使fieldA
变得更加重要:
{
"multi_match" : {
"query" : "this is a test",
"fields" : [ "fieldA^3", "fieldB" ]
}
}
这样,分数会受到您在查询中的权重的影响,如果您按分数排序(默认),则会按预期顺序获得结果。分配给字段的权重需要进行一些微调,具体取决于您的文档和执行的查询。