【问题标题】:Highlighting in Solr 1.4 - requireFieldMatchSolr 1.4 中的高亮显示 - requireFieldMatch
【发布时间】:2011-02-02 16:10:33
【问题描述】:

我有一个对象

Title   : foo
Summary : foo bar
Body    : this is a published story about a foo and a bar

所有三个都设置为存储=true的字段。

用户在我的系统中搜索单词

"foo"

我想在所有三个地方突出显示 foo。

用户在标题中搜索单词 foo

"title:foo"

我只想在标题中突出显示 foo。

当我添加 hl.requireFieldMatch=truehl.usePhraseHighlighter=true 作为对 SOLR 的查询的一部分,在进行通用非字段搜索时,我无法在所有三个地方突出显示。有没有办法让这两种情况都起作用?

我关闭了这两个项目,但我添加了一些用户看不到的查询字段部分,例如仅显示已发布项目。问题是

(foo AND status:published)

当用户仅搜索单词“foo”时,导致正文中发布的单词突出显示。

【问题讨论】:

    标签: search lucene solr highlighting


    【解决方案1】:

    事实证明,与 solr / lucene 相比,act_as_solr 可能更像是一个怪癖。

    我利用了 solr 中的 fq 选项 http://wiki.apache.org/solr/CommonQueryParameters#fq

    查询不再像

    (foo AND status:published)
    

    看起来更像

    q=foo&fq=status:published
    

    当它遇到 solr 时

    fq 不会影响突出显示,它似乎是一种更好的方法,因为您可以获得一些 solr 缓存优势。

    acts_as_solr 仍有一个错误/功能未实现,它也需要利用这一点。

    例如,如果我的模型名为 article,并且用户搜索单词 article,AAS 会在后台构建一个查询,看起来像

    (article AND type_t:article)
    

    这会导致同样的问题,当您不希望它在整个地方突出显示文章一词时,以及当用户搜索术语“文章”时,他们会返回系统中的每个对象。

    快速浏览了acts_as_solr 的GitHub 分支,并没有看到任何人已经实现了这一点。 parser_methods.rb 中有不错的#TODO

    【讨论】:

      猜你喜欢
      • 2011-07-06
      • 2012-03-16
      • 2012-05-18
      • 2018-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-10-09
      • 2013-12-04
      • 2023-04-10
      相关资源
      最近更新 更多