2010-03-30 54 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