3

フリーテキスト検索に太陽黒点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

トレーダー モデルに 2 人のトレーダーがいるとしましょう。その名も「グリフィンドールホール」と「レイブンクローホール」。開発中に 'Hall' を使用して検索すると、このトレーダーの両方が表示されます。本番環境にデプロイした後、同じクエリ文字列に対して最初のトレーダーのみが返されます。これは正しくありません。実際、問題はどこにあるのでしょうか。

4

2 に答える 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 を再起動し、モデルのインデックスを再作成します。

お役に立てれば!

于 2014-11-01T14:40:45.510 に答える