【问题标题】:How to do simple boolean query in sunspot solr如何在太阳黑子 solr 中进行简单的布尔查询
【发布时间】:2012-08-17 12:17:51
【问题描述】:
>>> 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}>

我想要简单的布尔查询来处理 sunspot-rails, solr 我尝试了很多可能性,而不是简单地接受它。

AND 和 NOT 似乎按照 dismax 配置工作。 如何使 OR 查询正常工作。

提前致谢。

【问题讨论】:

    标签: ruby-on-rails-3 solr search-engine sunspot-rails


    【解决方案1】:

    我想通了。您可以使用 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  
    

    【讨论】:

    • 它真的适合你吗?该文档声称 any_of 和 all_of 仅适用于标量字段,例如。字符串,整数等。根据我的观察,全文字段的调用 any_of 或 all_of 没有区别。查询是一样的,所以实际上 sunspot 只是忽略了全文字段的 any_of 或 all_of。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多