对于相同的搜索条件,Solr或ElasticSearch可以将不同订单的相同结果返回给不同的访问者吗?

时间:2013-05-10 16:48:39

标签: solr elasticsearch

我正在开发一个基于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相反?

我知道我需要将一些信号传递给搜索引擎,要求引擎给其中一个字段增加“重量”。

谢谢和问候。

1 个答案:

答案 0 :(得分:1)

看起来您只需要对要查询的字段赋予不同的权重,具体取决于正在执行查询的用户。

例如,您可以使用带弹性搜索的multi_match查询,该搜索允许您搜索多个字段,同时为它们提供不同的权重。以下示例使fieldA变得更加重要:

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

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