部署后,Sunspot Solr在开发环境中可以进行部分搜索,但在生产环境中无法正常工作。

3

我正在使用Sunspot 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”进行搜索时,可以找到这两个交易员。但是在生产环境中部署后,对于相同的查询字符串,只返回了第一个交易员,这是不正确的。实际上问题出在哪里?

重建索引可能是值得的。如果您删除Solr的数据文件夹,然后停止/启动它,它应该会重新构建索引。 - Kris
我已经重新索引了它。没有起作用。 - Quazi Marufur Rahman
2个回答

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,并重新索引您的模型。

希望这能帮到您!


0

你并没有提到你的生产环境,但是如果你部署到Heroku上,你必须编辑websolr schema.xml文件,因为它会忽略你本地的schema.xml。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接