Ruby on rails 太阳黑子如何查询特定字段
通过阅读太阳黑子文档,我试图找到如何查询自动完成字段 我像这里一样创建它们 下面是config solr/conf/schema.xmlRuby on rails 太阳黑子如何查询特定字段,ruby-on-rails,solr,sunspot,sunspot-rails,Ruby On Rails,Solr,Sunspot,Sunspot Rails,通过阅读太阳黑子文档,我试图找到如何查询自动完成字段 我像这里一样创建它们 下面是config solr/conf/schema.xml <types> ....... <fieldType name="autocomplete" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.L
<types>
.......
<fieldType name="autocomplete" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LetterTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="autosuggest" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LetterTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
.....
</types>
<fields>
....
<dynamicField name="*_ac" type="autocomplete" indexed="true" stored="true"/>
<dynamicField name="*_as" type="autosuggest" indexed="true" stored="true"/>
....
</fields>
我得到一个错误:
Sunspot::UnrecognizedFieldError: No text field configured for Post with name 'autocomplete'
我做错了什么
我在github上共享了该应用程序:弗拉基米尔
您正在使用该插件的文档,但看起来您并没有实际使用该插件。您不需要使用插件,您可以定义一个自定义字段,并告诉Sunspot使用它
您在schema.xml
中的配置看起来不错。在您的searchable
块中,我将执行以下操作:
class Post < ActiveRecord::Base
attr_accessible :text, :user_id
has_one :user
searchable do
text :text, :stored => true, :as => :text_ac
integer :user_id, :references => User
end
end
Sunspot.search(Post) {
keywords('ra')
}
插件添加支持*_ac和*_,因为没有it字段的类型不能很好地索引(我可以抓取一个这样做的文件并删除插件)。但是我能定义文本吗:文本;text:text,:as=>:text\u ac-保留我的常规搜索原样和自动完成-搜索*\u ac字段?我怎样才能在不影响已定义和工作的常规搜索的情况下,将*_ac字段添加到可搜索块中?我正在寻找可自动完成的查询。然后得到类似于['ra',rai',rail',rails']的结果我编辑了我的原始答案--看看我是如何添加
:autocomplete_text
属性的?它仍然使用相同的字段,但索引方式不同。您的解决方案允许使用一个单词进行搜索,但它甚至会影响常规查询,如Post.search{keywords's}。结果我希望创建不更改常规搜索的功能。这只是为了自动完成。
class Post < ActiveRecord::Base
attr_accessible :text, :user_id
has_one :user
searchable do
text :text, :stored => true, :as => :text_ac
integer :user_id, :references => User
end
end
Sunspot.search(Post) {
keywords('ra')
}