我有一个对象
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=true
和hl.usePhraseHighlighter=true
作为我对SOLR的查询的一部分在进行通用的非现场搜索时,我无法在所有三个地方都突出显示。有没有办法让两种方案都有效?
我关闭了这两个项目,但是我添加了查询的一些部分,用户看不到哪些部分仅显示已发布的项目。问题是
(foo AND status:published)
当用户仅搜索单词“foo”时,会导致正文中发布的单词突出显示。
答案 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