私のレールアプリケーションの1つに検索機能を追加しようとしています。私はちょうどかなりのいくつかのモデルのmysqlの列を検索する必要があります。私はこれを行う最善の方法が何であるか疑問に思っています。私はプラグインを使うべきだと思っていますが、本当に誰かに推薦する人はいません。あなたが他の人よりもお勧めする人はいますか? acts_as_ferretはどうですか?ありがとう。レールアプリケーションでのサイト全体の検索
答えて
Searchlogicはチェックアウトする価値があります。 ryanbさんはちょうどawesome railscastでした。フルテキストソリューションをお探しの場合は、screencast on Thinking Sphinxもあります。
私は決してacts_as_ferret
を使用していません。ここにあなたができることがあります。そのような表を作成:あなたが検索したい各モデルの
create_table(:indexed_models) do |t|
t.column :name, :string
t.column :model_id, :id
t.column :index, :string
end
を、「インデックス」を作成するために、検索可能列の値を連結します。結果をindexed_modelsテーブルに挿入します。名前がモデルの名前である場合、model_idは主キーであり、indexは検索可能なコンテンツです。 「検索可能」と指定したモデルが変更された場合は、オブザーバーを使用してindexed_modelsテーブルを作成および更新します。
indexed_modelsのインデックスフィールドをテキスト検索し、リターンモデル名&プライマリキーに基づいてモデルのコンテナを生成します。
私はこのアプローチを使ったことが一度もありませんが、私もそれを意味しています。
ちょっと考えてみましょう:もしあなたがそのルートを辿るなら、インデックス付きモデルと元のモデルの間に多相関係を使用することができます - ActiveRecordはインデックス付きモデルから元のあなたはあなた自身を転がす必要があります。 – NeilS
@ニールズ良い点は、これらの検索可能なすべてのモデルにSTI(Single Table Inheritance)を使用することです。このようにして、create_tableの "name"列は必要ありません。既にモデルを持っている、あるいはこれらのモデルでSTIを動作させることができない場合は、もう少し作業が必要です。 –
検索デーモンとインデクサーとしてSphinxを強くお勧めします。それは本当に良い、カスタマイズ可能でスケーラブルです。クライアントとフロントエンドライブラリの使用UltraSphinxまたはThinkingSphinxとして
。最近、より良いサポートが2番目にあります。
ThinkingSphinxはPDFなどのファイルを検索できますか? – Shanison
- 1. 検索VBscriptの単語全体
- 2. アプリ全体でグローバルな「検索機能」
- 3. スケール全体サイト
- 4. 文全体の小冊子の索引の検索方法
- 5. プロジェクト全体から検索する
- 6. Drupalサイト全体の字幕?
- 7. ASP.NET MVCでの全文検索の単体テスト方法
- 8. これ以上のデータまで、ファイル全体を検索
- 9. Javaでファイル名のコンピュータ全体を検索
- 10. マウスクリックのカーソル効果をサイト全体で
- 11. ドキュメント全体を検索せずにページ上の要素を検索
- 12. Windowsの検索 - Cの全文検索#
- 13. Sails.jsでの全文検索
- 14. 動的サイト全体をダウンロード
- 15. サイト全体の内側の影のオーバーレイ?
- 16. 日食でワークスペース全体で検索/置換
- 17. サイト全体のCSSファイルとCakePHPのリンク
- 18. 複数のサイト全体のクッキー/ $ config ['cookie_domain']
- 19. Googleカスタム検索サイトの特定コードでの検索
- 20. システム全体のファイル拡張子を検索する
- 21. Visual Studio:ソリューション全体のインクリメンタル検索はありますか?
- 22. iPhoneで単語全体を検索するには?
- 23. vimで単語全体を検索して置換する
- 24. 全検索は
- 25. 企業サイトの検索
- 26. ASP.net - 静的サイトの検索
- 27. 全体のサイトを取得するpython
- 28. 各クラスまたはサイト全体のデータベースオブジェクト?
- 29. サイト全体または一部のSSL?
- 30. サイト全体のページ読み込みイベント
私はこれにSphinxを使用しています。それはかなりきれいです - 私はRiddleクライアント(thinking_sphinx男から)を使用するRubyコードの20行を持っています。 1つのキャッチがあります.Sphinxは、索引付けするそれぞれの事柄に固有の文書IDが必要です。私はsql_query_pre、sql_query_post、および@variableを使って、各ドキュメントが(私が完全に無視する)一意のIDを取得することを確認します。 – casey
Searchlogicは素晴らしいですが、私はクロスモデル検索機能を提供しているとは思いません。 (私が間違っていると私を訂正してください!) スフィンクスとThinkingSphinxは確かに、私の意見では非常に効果的です。 – NeilS