2013-01-21 55 views
1

比方说,我有一个模型定义如下(标题和描述字符串和文本字段,分别):太阳黑子派出查询

class Entity < ActiveRecord::Base 
    # Skipped 

    searchable do 
    text :title, 
    text :description 
    end 
end 

我希望能够使用搜索查询,如“标题:FOO说明:bar“,它假设只检索那些符合搜索标准的实体,即标题包含”foo“和/或描述包含”bar“的实体。精确的语法无关紧要。

我想在我的演示应用程序的搜索字段中键入这样的查询,但显然它没有:-)

所以返回任何结果,确实太阳黑子查询分析器支持派出查询(不知道这个词是否正确)?

谢谢。

回答

2

这是Solr的edismax查询解析器应该支持的功能。然而,太阳黑子目前默认为较旧的dismax查询分析器。

为了使edismax在搜索中,尝试在search块这一行:

adjust_solr_params { |p| p[:defType] = 'edismax' } 

(这是从我的头顶,让我知道如果我错过了语法)。

+0

谢谢, 我会试试看。 – nameless

+0

这个答案适用于我,除了我不得不使用“title_text(term)”而不是“title(term)”。有没有办法解决这个问题? –

+1

嘿唐,太阳黑子的“可搜索”DSL是关于将模型的列映射到Lucene字段的命名方案的。它的'text:title'只是产生一个名为'title_text'的字段。在这一点上阅读太阳黑子的schema.xml应该是非常有教育意义的。 –