我正在使用太阳黑子solr进行自由文本搜索。我试图从交易者模型中搜索交易者。这是可搜索的块
searchable do
text :name
text :postcode
text :phone
text :phone_alt
text :phone_mobile
end
这是schema.xml
<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.PorterStemFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="20" side="front"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="20" side="back"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="20" side="front"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="20" side="back"/>
</analyzer>
</fieldType>
这是控制器代码
search = Trader.search do
keywords params[:q] do
minimum_match 2
end
end
@traders = search.results
假设我的交易员模型中有两位交易员。这里有'Gryffindor Hall'和'Ravenclaw Halls'。当我在开发中使用'Hall'搜索时,我得到了这个交易者。在生产中部署之后,对于相同的查询字符串,它仅返回第一个交易者。哪个不对。实际上问题在哪里?
答案 0 :(得分:0)
您没有提及有关生产环境的任何内容,但如果部署到heroku,则必须编辑websolr schema.xml,因为它忽略了本地schema.xml。
答案 1 :(得分:0)
有这个确切的问题,并且能够通过在生产服务器上运行以下内容来解决它。第一站solr ......
RAILS_ENV=production bundle exec rake sunspot:solr:stop
然后我从项目中删除了solr目录(rm -rf solr
)并重新安装了......
rails generate sunspot_rails:install
在此之后,修改您的/solr/conf/schema.xml
以进行部分搜索。重新启动应用程序服务器和solr以及重新索引模型。
希望这有帮助!