0

act_as_ferret を使用して、DB で非常に単純な検索を行っています。これを「会場」モデルに入れました:

acts_as_ferret :fields => [:name, :city]

そして、これは私のコントローラ検索アクションにあります:

@t = Venue.find_by_contents(params[:search]+'~')

そして、結果をレンダリングするだけです。

render :text => @t.to_json, :success => true, :status => :ok

簡単なテストを実行すると:

http://localhost:3000/venue/list?search=The

ログを見ると、インデックスに対して適切なクエリ "The~" が実行されていることがわかります。しかし、結果が得られません。名前フィールドに「The」という単語が含まれる「Venues」がいくつかあります。

これは非常に単純な検索であり、acts_as_ferret がかなり使用されているため、インデックスが破損しているかどうかを確認するためにインデックスを再構築しようとしました....サイコロはありません

何か案は?

ありがとう!

4

2 に答える 2

2

はい、Ferret はインデックスを破壊することでよく知られています。

Thinking Sphinxのような別の検索プラグインに切り替えることをお勧めします。詳細については、Railscastをご覧ください。

于 2009-04-14T06:20:10.590 に答える
1

問題は、「the」がストップワードとして定義されていることだと思います。これは、すべてのドキュメントを返すため、インデックスが作成されていない非常に一般的な単語です。ストップワード リストを設定できます。

Ferret に問題がある場合は、Solr の使用を検討します。

于 2009-12-02T14:46:17.143 に答える