繁体   English   中英

太阳黑子Solr部分搜索在开发中工作但在部署后不在生产中

[英]Sunspot Solr partial search working in development but not in production after deploying

我正在使用太阳黑子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'搜索时,我得到了这个交易者。 在生产中部署之后,对于相同的查询字符串,它仅返回第一个交易者。 哪个不对。 其实问题出在哪里?

您没有提及有关生产环境的任何内容,但是如果部署到heroku,则必须编辑websolr schema.xml,因为它忽略了本地schema.xml。

有这个确切的问题,并能够通过在生产服务器上运行以下来解决它。 第一站solr ...

RAILS_ENV=production bundle exec rake sunspot:solr:stop

然后我从我的项目中删除了solr目录( rm -rf solr )并重新安装了...

rails generate sunspot_rails:install

在此之后,编辑/solr/conf/schema.xml以进行部分搜索。 重新启动应用程序服务器和solr以及重新索引模型。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM