为搜索引擎上的每个单词添加分数

时间:2015-05-19 07:43:33

标签: mysql solr full-text-search elasticsearch

我正面临一个问题,我希望有人可以帮助我。我有一个搜索对象的搜索引擎。每个对象都有许多关键字,每个关键字都有自己的分数或权重。例如:

  • 对象A包含关键字:旅行(权重 5.0 ), Visa (权重 4.0 )。
  • 对象B包含关键字:澳大利亚(权重: 7.0

当我使用文字搜索时:"travel to Australia"。结果将按关键字的权重排序。在这种情况下,结果是:

  • 对象B
  • 对象A

我有计划设计这样的数据库,但无法找到按重量排序的任何方式。

Object_name    |           Keyword
 ObjectA       |    "Travel:5.0 Visa:4.0"
 ObjectB       |       "Australia:7.0"

那么是否有一些搜索引擎(Elasticsearch,Solr ...)可以搜索关键字字段并按关键字的重量排序?

2 个答案:

答案 0 :(得分:0)

我认为你不能增加搜索条件的权重,但你可以提高某些查询的针对性。

在这种情况下,您可能必须为每个特定单词编写查询并相应地提升每个查询。话虽如此,我并没有真正看到一个特定单词比另一个单词更重要的用例,因为它应该是基于关键字的免费搜索。您可能最好在不同的字段中拆分这些值,您可以使用不同的提升分数查询来查询这些值。

答案 1 :(得分:0)

作为一种奇特的解决方案,this token filter可以使用每个单词来指定有效负载。

之后,您可以retrieve that payload in scripts并将其用于评分。

除此之外,您可以直接在查询中通过各种方式在搜索时添加提升。