2012-01-30 4 views
0

私はHeroku上に検索のユーザーフレンドリーさを高めるために探しているRailsアプリケーションを持っています。これを行うには、関連付けを介して複数のモデルの複数のフィールドにわたるテキスト検索を許可したいと思います。ユーザからの入力は、これらのフィールドのいずれかからのテキストの混合であってもよく(また、しばしば複数のフィールドにまたがることもある)、特に順序は問わない。Railsはパフォーマンスを念頭に置いてフィールド間でテキスト検索をトークン化しました

例:車のデータベースがあり、 "Honda Fit 2011"(メーカーのテーブルから "Honda"が検索された)を検索できるようにしたい場合、モデルテーブルからFitが来て、2011が来ましたmodel_yearテーブルから取得します。

私は、これらの各フィールドからの一意の単語リストを含むルートレコードに1つのフィールドを作成してから、ユーザーの入力をトークン化する必要があると考えています。しかし、それはIN句を使用することになります。pg_searchのようなフルテキスト検索プラグインの恩恵を受けることはできません。

私の質問は、このような検索をRailsで有効にするための良い方法です。

+0

すべてのモデルにわたる全文検索があなたの問題を解決していませんか? – Reactormonk

+0

フルテキスト検索は、通常、外部ツールに与える作業です。あなたはsolr/lucene、sphinx、またはelastic searchを見たいかもしれません。 – keymone

+0

@複数のモデルにまたがるフルテキストを使用しますが、間違っていないと、常に異なるテーブルのアイテムが返されます。私はおそらく明らかではなかった:私の車の例では、私はいつもmodel_yearレコードを返すことにしたいと思っていた。だから、 "ホンダ"の検索は、 "ホンダ"のメーカーに連想させることができるすべてのmodel_yearsを取​​り戻すだろう。 – Parrots

答えて

0

私はSunspot_railsを見ていきます。 Solrは検索エンジンとしてSolrを使用しますが、あらゆる種類のフルーティーな方法でコンテンツのインデックスを作成することができます。例えば、私は、モデルはかなり単純にその団体にインデックスされている:

searchable do 
    text :description 
    text :category do 
    category.present? ? category.name : '' 
    end 
end 

あなたは、その後に検索することができます。

TYPES = [Asset,Product] 

Sunspot.search(*TYPES) do |q| 
    q.fulltext search_str 
end 
関連する問題