2012-08-17 73 views
3
>>> marketing = User.search do |s| 
>>>  s.fulltext "Marketing" 
>>> end 
>>> marketing.total 
1448 

>>> sales = User.search do |s| 
>>>  s.fulltext "Sales" 
>>> end 
>>> sales.total 
567 

>>> marketing_and_sales = User.search do |s| 
>>>  s.fulltext "Marketing AND Sales" 
>>> end 
>>> marketing_and_sales.total 
945 

>>> marketing_or_sales = User.search do |s| 
>>>  s.fulltext "Marketing OR Sales" 
>>> end 
>>> marketing_or_sales.total 
945 

<Sunspot::Search:{:fq=>["type:User"], :q=>"Marketing AND Sales", :fl=>"* score",  :qf=>"textfield1 textfield2 textfield3", :defType=>"dismax", :start=>0, :rows=>30}> 

我想簡單的布爾查詢來獲得對太陽黑子護欄的工作,Solr的 我試過很多可能性它不是簡單地把它。如何做簡單的布爾查詢太陽黑子的Solr

AND和NOT似乎按照dismax配置工作。 我如何使OR查詢工作。

在此先感謝。

回答

3

我想通了。您可以使用any_of和all_of來指定搜索標準的範圍。儘管all_of除非在any_of內部使用,否則不起作用。這裏是鏈接http://sunspot.github.com/docs/Sunspot/DSL/Scope.html#all_of-instance_method

>>> marketing_or_sales = User.search do |s| 
>>>  s.any_of do 
>>>   s.fulltext "Marketing" 
>>>   s.fulltext "Sales" 
>>>  end 
>>> end 
>>> marketing_or_sales.total 
945 
+1

它真的對你有用嗎? doc聲明any_of和all_of只適用於標量字段,例如。字符串,整數等。根據我的觀察,對全文字段調用any_of或all_of沒有區別。查詢是一樣的,所以實際上太陽黑子只是忽略全文字段的any_of或all_of。 – wawka 2014-03-21 13:48:37