【问题标题】:how to get resultcounts for each word if multiword-search was without results如果多词搜索没有结果,如何获取每个词的结果计数
【发布时间】:2014-10-13 14:36:28
【问题描述】:

在我们的网上商店中,我想实现一个功能,它应该执行以下操作:

如果用户例如搜索“phone magnum”,不会有结果。

如果没有结果我想给他看的机会

  • 搜索“电话”会给他 139 个结果
  • 并搜索“magnum”将得到 12 个结果。

我不想仅仅为了获得这些计数而启动多个查询。但目前我不知道该怎么做。

我阅读了 Solr-wiki 的 faceting,但没有发现任何对我的问题有用的东西。也许我错过了什么......

【问题讨论】:

    标签: solr


    【解决方案1】:

    不确定为什么要避免多次查询。如果您对短语 "phone magnum" 的第一次搜索未返回任何结果,您可以使用 rows=0 为每个搜索关键字发出一个查询,这将只为您提供计数。这应该是有效的,因为您没有构建任何结果文档并且只获取结果计数。

    但是,如果您真的想避免后续查询,这里有一个方法:在您的索引中设置一个不考虑 IDF 的字段。 (请参阅this 了解如何执行此操作。)一旦该字段可用(称其为name_no_idf)对该字段name_no_idf:(phone magnum) 发出查询。请注意,这不是短语搜索。

    name_no_idf 字段中同时包含phonemagnum 的文档将获得2 分,而仅匹配一个单词的文档将获得1 分。在此查询中添加facet=true&facet.field=name .然后,您为这两个词获得的方面计数将是您正在寻找的计数。但很少有警告:

    1. 如果其中一个词非常少见,可能需要增加facet.limit
    2. 构面查询成本很高

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 2018-12-10
      • 2011-12-19
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      相关资源
      最近更新 更多