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

假设我的交易者模型中有两个交易者。有“格兰芬多礼堂”和“拉文克劳礼堂”之分。当我在开发中使用“Hall”进行搜索时,我得到了这两个交易者。在生产中部署后,对于相同的查询字符串,它只返回第一个交易者。这是不对的。其实问题出在哪里?

4

2 回答 2

0

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

RAILS_ENV=production bundle exec rake sunspot:solr:stop

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

rails generate sunspot_rails:install

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

希望这可以帮助!

于 2014-11-01T14:40:45.510 回答
0

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

于 2013-09-05T22:52:47.990 回答