0

我正在开发一个基于 Spring 的网站,我需要使用搜索引擎来提供“自定义”搜索结果。我正在考虑 Solr 或 Elastic。

这就是我所说的“定制”。

假设我有两个字段 A 和 B 要搜索。

假设有两个访问者,我可以通过跟踪他们的活动来描述他们。假设访问者 1 不断使用或搜索值 a(来自 A)和访问者 2 值 b(来自 B)。现在两个访问者都搜索满足 A=a OR B=b 的记录。

Solr 或 Elastic 能否以不同的顺序返回访问者 1 和 2 的结果?我的意思是,例如,A=a 的结果仅领先于访客 1 的 B=b 结果?而访客 2 则相反?

我知道我需要向搜索引擎传递一些信号,以要求引擎为其中一个字段提供更多“权重”。

谢谢并恭祝安康。

4

1 回答 1

1

看起来您只需要根据执行查询的用户对查询的字段赋予不同的权重。

例如,您可以使用带有elasticsearch 的multi_match查询,它允许您搜索多个字段,并赋予它们不同的权重。这是一个使fieldA更重要的示例:

{
  "multi_match" : {
    "query" : "this is a test",
    "fields" : [ "fieldA^3", "fieldB" ]
  }
}

这样,分数会受到您对查询的权重的影响,如果您按分数排序(默认),您会以预期的顺序获得结果。分配给字段的权重需要一些微调,但取决于您的文档和您执行的查询。

于 2013-05-10T19:31:25.867 回答