2010-03-30 80 views
1

我有一个对象在Solr的1.4突出 - requireFieldMatch

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

所有这三个都设置为存储=真田。

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

"foo" 

我想强调FOO在所有三个地方。在标题

"title:foo" 

这个词富

用户搜索我只想强调在标题中富。

当我加入 hl.requireFieldMatch=truehl.usePhraseHighlighter=true作为我查询的一部分转移到SOLR做派出搜索通用非当我无法获得突出在三个地方。有没有办法让这两种情况都起作用?

我关闭了这两个项目,但我在查询的某些部分中添加了用户看不到哪些只显示已发布项目的实例。问题是

(foo AND status:published) 

导致发布在主体中的单词在用户只搜索单词“foo”时突出显示。

回答

1

原来,这可能比使用solr/lucene更像是act_as_solr的一个怪癖。

我把Solr的内啡选项的优势 http://wiki.apache.org/solr/CommonQueryParameters#fq

查询看起来不再像

(foo AND status:published) 

看起来更像

q=foo&fq=status:published 

当它击中的Solr

fq不会影响highlighti ng,这似乎是一个更好的方式来做到这一点,因为你得到一些solr缓存的好处。

还有一个缺陷/功能没有与acts_as_solr实现,这也需要利用这个优势。

举例来说,如果我的模型被命名的文章,并为字的文章用户搜索,AAS正在建设,看起来幕后查询像

(article AND type_t:article) 

这会导致同样的问题,这个词的文章亮点当你不需要它的时候,以及当用户搜索术语“文章”时,他们会返回系统中的每一个对象。

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