我正在尝试使用 SOLR 在我的 rails 应用程序中搜索部分单词。这需要更改 schema.xml 文件。正如其他人所建议的那样,我已经更新了我的“app_root/solr/conf/schema.xml”文件以删除
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
并添加...
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
进行这些更改后,我运行 rake 命令rake sunspot:reindex
并获得 100% 完整的重新索引结果。然后我启动我的服务器......但是,我仍然只收到完整单词的回复,而不是部分单词。
以防万一,这是我的 Style 模型中的相关代码:
searchable do
text :full_name
#full_name is just one of Style's attribute columns
end
以及执行提取的代码...
if params[:sSearch].present?
@search = Style.search do
fulltext params[:sSearch]
end
styles = @search.results
end
任何帮助将不胜感激。
参考见:
https://github.com/sunspot/sunspot/blob/master/README.md
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.EdgeNGramFilterFactory