【问题标题】:Querying across multiple fields with different boosts in Solr在 Solr 中查询具有不同提升的多个字段
【发布时间】:2012-04-10 18:41:53
【问题描述】:

在 Solr 中,跨不同字段查询的最佳方式是什么,其中每个字段上的每个查询都有不同的权重?

我们使用 C# 和 ASP.NET,SolrNet 用于查询 Solr。我们的索引看起来有点像这样:

  • document_id
  • 标题
  • 文本内容
  • 标签
  • [更多字段...]

然后使用关键字进行查询,其中每个关键字具有不同的权重。因此,例如,“ipad”的权重可能为 40,而“android”的权重可能为 25。

与此相结合,每个字段都有不同的基础权重。例如,关键字比页面标题更有价值,页面标题比文本内容更有价值。

所以,我们最终会得到如下结果:

  • 标题^25
  • text_content^10
  • 标签^50

以及以下关键字:

  • ipad^25
  • 苹果^22
  • 微软^15
  • windows^15
  • 软件^20
  • 电脑^18

因此,每个搜索查询都有不同的权重,每个字段都有不同的权重。结果,我们最终得到如下搜索条件:

  • 标题:ipad^50
  • 标题:苹果^47
  • title:microsoft^40
  • [更多标题...]
  • text_content:ipad^35
  • text_content:apple^32
  • text_content:microsoft^25
  • [更多...]

这会转化为一个非常非常长的搜索查询,超出了允许的限制。这似乎也是一种非常低效的做事方式,我想知道是否有更好的方法来实现这一点。

实际上,我们有一个不同权重的关键字列表,以及一个 Solr 中也有不同权重的字段列表,其想法是查询索引以检索最相关的文档。

使这件事更复杂的是,尽管它可能超出了这个问题的范围,但查询还包括过滤器以过滤掉文档。这是使用以下类型的查询完成的:

&FQ =( - DOCUMENT_ID:4f845eb321c90b0aec5ee0eb)FQ =( - DOCUMENT_ID:4f845cd421c90b0aec5ee041)FQ =( - DOCUMENT_ID:4f845cea21c90b0aec5ee049)FQ =( - DOCUMENT_ID:4f845cf821c90b0aec5ee04d)FQ =( - DOCUMENT_ID:4f845d0e21c90b0aec5ee056)FQ =( - DOCUMENT_ID:4f845d3521c90b0aec5ee064 )&FQ =( - DOCUMENT_ID:4f845d3921c90b0aec5ee065)FQ =( - DOCUMENT_ID:4f845d4921c90b0aec5ee06b)FQ =( - DOCUMENT_ID:4f845d7521c90b0aec5ee07b)FQ =( - DOCUMENT_ID:4f845d9021c90b0aec5ee084)FQ =( - DOCUMENT_ID:4f845dac21c90b0aec5ee08e)FQ =( - DOCUMENT_ID:4f845dbc21c90b0aec5ee093)

这些也可以为搜索查询添加很多字符,如果也有更好的方法来处理这个问题,那就太好了。

非常感谢任何帮助或建议。谢谢。

【问题讨论】:

    标签: solr solrnet


    【解决方案1】:

    我建议将这些默认参数添加到solrconfig.xml 中的请求处理程序配置中。它们总是一样的,对吧?

    <requestHandler name="standard" class="solr.SearchHandler" default="true">
        <lst name="defaults">
            <str name="defType">edismax</str>
            <str name="qf">title^25 text_content^10 tags^50</str>
        </lst>  
    </requestHandler>
    

    您应该能够添加静态过滤器等,这样您就不必指定这些值,除非您想做一些与默认值不同的事情,最终得到更短的 url。

    【讨论】:

    • 考虑过这一点,虽然提升也会根据搜索词而变化,所以我不确定默认提升值有多大价值。例如,title 的 base 提升可能为 25,但随后每个被搜索词的提升将被添加到此,以创建类似这样的内容 - title:foo^35 title:bar^40标题:foobar^30.
    猜你喜欢
    • 1970-01-01
    • 2020-01-06
    • 2014-01-05
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多