【问题标题】:Search with flexible ranking使用灵活的排名搜索
【发布时间】:2015-01-14 20:50:05
【问题描述】:

任何人都可以推荐具有灵活排名计算的搜索引擎吗?

什么是灵活排名计算?

例如我有两个文件:

obj1 = {
 title: "new record"
 tags: [
             {value:"tag1", weight:1},
             {value:"tag2", weight:0.8},
             {value:"tag3", weight:2},
     ] 
}

obj2 = {
 title: "new record with tag1 in title"
 tags: [
             {value:"tag1", weight:0.5},
             {value:"tag2", weight:1},
             {value:"tag3", weight:0.01},
     ] 
}

假设“title”属性的权重为 0.25

当我在所有属性中搜索“tag1”时 我希望搜索返回 obj1 的排名 = 1 和 obj2 的排名 = 0.75

我知道 Solr 可以做到,但您还有其他建议吗?

【问题讨论】:

  • 0.25和tags.weight有什么关系(公式)?
  • MongoDB 聚合框架可用于查找匹配的文档,计算它们的分数并按计算的分数排序输出。
  • title 的权重始终为 0.25,但每个文档的标签可能具有不同的权重。标题权重和标签权重之间没有关系。
  • ElasticSearch 是您可以考虑的选项。elasticsearch.org/guide/en/elasticsearch/reference/current/…

标签: mongodb search solr amazon-cloudsearch azure-cognitive-search


【解决方案1】:

您提到标题的权重,但随后您为分数描述的值直接映射到标签值。不确定您是否错过了有关这两者如何连接的详细信息。

假设除了提升与特定标签或值范围匹配的文档之外,您还希望标题匹配的分数在整体文档分数中发挥作用,您可以使用 scoring profiles 通过 Azure 搜索执行此操作(如果您想要搜索即服务解决方案),如果您更喜欢部署和管理自己的基础设施,则可以使用 Solr 或 Elasticsearch 通过将提升作为查询的一部分来实现;例如,在 Elasticsearch 中,有一些函数提升可以让您使用字段的值作为输入来提升计算。

【讨论】:

  • 标题权重在索引描述(元数据)中,但标签权重是数据的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-29
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
相关资源
最近更新 更多