0
我是Rails的初学者,我正在使用Sunspot来实现搜索功能。在RoR应用程序上搜索类似的短语
我想搜索患者姓名。到现在为止使用全文方法进行搜索,它正在工作。不过,我想实现以下功能。
如果名字是约翰·史密斯,我想,当我以字符串搜索中显示这个结果“SMI”
我咨询太阳黑子文档,但没有找到一个解决方案
我是Rails的初学者,我正在使用Sunspot来实现搜索功能。在RoR应用程序上搜索类似的短语
我想搜索患者姓名。到现在为止使用全文方法进行搜索,它正在工作。不过,我想实现以下功能。
如果名字是约翰·史密斯,我想,当我以字符串搜索中显示这个结果“SMI”
我咨询太阳黑子文档,但没有找到一个解决方案
如果您想要在全文搜索中返回子字符串,你可以看看Full text Searching。
如果你想要做你的结果的分页是来自于搜索比你可以在myapp/config/initializers/
与添加文件sunspot_solr.rb
对结果进行分页:
Sunspot.config.pagination.default_per_page = 100
回报100个结果这种情况。
补充:
你schema.xml
文件被创建于yourappfolder/solr/conf
你也可以添加<filter class="solr.NGramFilterFactory"/>
匹配任意字符串。
这是我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 class="solr.TextField" name="text_pre" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="10"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="10"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
</analyzer>
</fieldtype>
不要忘了重新启动服务器,重新索引你的模型,以使更改生效。