我在Schema.xml中使用NGramFilterFactory。但是当搜索(正确的)短语时,我没有得到任何结果。有没有办法解决这个问题?
一本书有一个标题:中等速度的多重奇数生产。
我在搜索时得到了一个结果:
多奇重重
但在搜索短语时:
“多奇重重”
我没有结果。
Schema.xml的
<fieldType name="ngram" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="50"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
...
<dynamicField name="*_ngram" stored="false" type="ngram" multiValued="true" indexed="true"/>
Book.rb
class Book < ActiveRecord::Base
attr_accessible :authors, :title
searchable do
text :title, :as => :ngram
end
end
BooksController.rb
def search
@books = Sunspot.search([Book]) do
keywords params[:query]
end.results
respond_to do |format|
format.html { render :action => "index" }
format.xml { render :xml => @books }
end
end