在Solr 1.4中突出显示 - requireFieldMatch

时间:2010-03-30 21:07:42

标签: search lucene solr highlighting

我有一个对象

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”时,

会导致正文中发布的单词突出显示。

1 个答案:

答案 0 :(得分:1)

事实证明,对于act_as_solr而言,这可能比使用solr / lucene更具怪癖。

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

查询不再是

(foo AND status:published)

看起来更像

q=foo&fq=status:published

当它击中solr时

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

还有一个bug /功能没有用acts_as_solr实现,它也需要利用这个。

例如,如果我的模型是命名文章,并且用​​户搜索文章一词,AAS正在幕后构建一个看起来像

的查询
(article AND type_t:article)

这会导致同样的问题,即当您不希望文章这个词突出显示时,以及当用户搜索术语“文章”时,他们会找回系统中的每个对象。< / p>

快速浏览一下act_as_solr的GitHub分叉,但没有看到任何人已经实现了这个。在parser_methods.rb

中有很好的#TODO