検索できるようにする必要がある MVC アプリケーションがあります。アプリケーションはモジュール式であるため、モジュールがデータを簡単に登録して検索モジュールにインデックスを付ける必要があります。
現時点では、柔軟性には問題のない迅速な暫定的な解決策しかありませんが、速度は常に問題になります。モジュールは、検索可能にしたいモデル (および関係と列) を登録します。検索時に、検索機能はこれらの関係を使用してデータをクエリし、レーベンシュタインを適用し、ストップ ワードを削除し、文字の置換などを行います。明らかに、データ量が増加するにつれて速度が低下するため、効果的にそのままにしてからselect * from x,y,z
マイニングすることは実行できません。データ。
上記の利点は、データを見つけたモデルに直接関係があることです。たとえば、何かが見つかった場合、コードで結果を関連する場所に関連付けたり、たとえばタイトルでキーワードが見つかった場合は画像や説明を表示したりModel_Product
できることを知っています。Model_Product::url()
Model_Product::find(other data)
上記のもう1つの利点は、すでにデータベース固有であるため、仮想ホストに投入するだけで機能することです。
私はさまざまなオプションについて読みましたが、それらはすべて非常に似ているように見えるため、人々が議論や議論を刺激することなく「正しい」オプションを提案できる可能性は低いですが、記録のために; 次のオプションから、Solr は私が傾いているもののようです。私は確定していないので、誰かが共有したいアドバイスや私が検討できる他のオプションがあれば、それは素晴らしいことです.
- スフィンクス
- ルセン
- Solr - Lucene をサービスとして実行しているように見えますか?
- ザピアン
- エラスティックサーチ
さまざまなチュートリアルやガイドを見ると、セットアップと構成が比較的簡単に思えます。上記の場合、モジュールに構成ファイル/検索インデックス モデルのパスを登録させ、サーチャーに検索プログラム x を介してそれらすべてを実行させることができます。これにより、インデックスが作成され、データをクエリする手段が提供されます。罰金。
私が理解していないのは、これらのインデックスが他のコードにどのように関連しているかです。データにインデックスを付けて検索し、Solr などで結果を見つけた場合、見つかったビットに関連する他のすべての情報を取得する方法をどのように知ることができますか?
また、仮想ホストごとに上記のいずれかのインスタンスが必要かどうかを誰かが確認できますか? これは、あまり情報を見つけることができないようです。単一のインスタンスに接続して、関連するデータを伝えることができると思いますか? データベース y への資格情報 x を使用して、単一の DBMS サーバーに接続するのとよく似ています。
確かに、私は現時点で方向性の点で少し行き詰まっており、知っている人からアドバイスを求めることを支持して、すべてについてすべてを読むのではなく、通常のようにこれについて広範囲に読んでいません。特定のルートを取る前に。
編集:この質問は、Solr の方に私をもっと動揺させたようです。ここにも同様のスレッドがあり、Sphinx についてかなりの洞察が得られます。