Web サイトに検索機能を実装するにはどうすればよいですか?[閉まっている]
-
09-06-2019 - |
質問
Web サイトの検索機能を実装したいと考えています (SO に似ていると仮定します)。そのようなものについて Google 検索を使用したくありません。
私の質問は次のとおりです。
これを実装するにはどうすればよいですか?
私が知っている方法は 2 つあります。
- ユーザーがクエリを入力すると、アプリケーション内のすべてのデータベースが検索されます。
- 私が持っているすべてのデータにインデックスを付けて別の場所に保存し、そこからクエリを実行します(Google が行うように)。
どっちに行けばいいのか誰か教えてもらえますか?長所と短所は何ですか?
もっと良い方法はありますか?
解決
ルセンを使って、
http://lucene.apache.org/java/docs/
Apache Lucene は、完全に Java で書かれた高性能でフル機能のテキスト検索エンジン ライブラリです。これは、全文検索を必要とするほぼすべてのアプリケーション、特にクロスプラットフォームに適したテクノロジです。
Java と .net で利用できます。これは、PHP でも Zend フレームワーク モジュールの形式で利用できます。
Lucene はあなたが望んでいること (検索されたアイテムのインデックス作成) を実行します。lucene インデックスを追跡する必要がありますが、パフォーマンスの点ではデータベース検索を行うよりもはるかに優れています。ところで、SO 検索は lucene を利用しています。:D
他のヒント
それはあなたの Web サイトがどれだけ包括的であるか、そしてあなたがどれだけ自分でやりたいかによって異なります。
を実行している場合 小さなウェブサイト カスタム検索を追加する可能性がなければ、Google に作業を任せてください (おそらく、 サイトマップ) を使用し、 Googleカスタム検索.
を実行すると、 中規模サイト SQL エンジンを使用する場合は、SQL エンジンの検索機能を使用します。
いくつか実行すると 重いソフトウェアスタック J2EE や .Net の使用など ルシーン, 、優れた強力な検索エンジンまたはその .Net クローン ルシーンネット
あなたがしたい場合は アプリケーションからの検索を抽象化します XML/HTTP および JSON API を使用して、言語に依存しない方法でクエリを実行できます。以下をご覧ください。 ソルル. 。Solr はバックグラウンドで lucene を実行しますが、それに優れた Web インターフェイスを追加します。
これに取り組む最善の方法は、ページの構築方法によって異なります。
多くの異なるレコードから頻繁に構成されている場合 (スタック オーバーフロー ページがそうだと思いますが)、データベース側でページを効果的に再構築するために多大な労力を費やさない限り、インデックス付けアプローチの方が良い結果が得られる可能性があります。
インデックス作成アプローチの欠点は、所要時間です。回避策はありますが(Google のサイトマップなど)、正しく行うのは複雑でもあります。
データベース パスを使用する場合は、最新の検索エンジン システムは、処理するリンク データがある場合にはるかに優れた機能を発揮するため、データベース内の「ページ」間のリンクを理解できるシステムを見つけると、プラスの効果が得られることにも注意してください。
Microsoft プラットフォームを使用している場合は、インデックス サービスを使用できます。これにより、IIS Web サイトと非常に簡単に統合できます。
全文検索、ランキング、特定のファイルタイプの除外と包含などの基本的な機能がすべて備わっており、HTML ページのメタ タグを介して独自のメタ情報を追加することもできます。
Google で検索するとたくさん見つかります。
これはあなたの質問とは多少異なりますが、RESTful 検索のアイデアを強くお勧めします。つまり、これまで実行されたことのない検索を実行するには、Web サイトはクエリを /searches/ に POST します。検索を再実行するには、ウェブサイトは /searches/{some id} を取得します。
これに関しては、いくつかの優れたドキュメントがあります。たとえば、 ここ.
(とはいえ、私は可能な限りインデックスを作成することを好みますが、これは最適化であるため、時期尚早である可能性があります。)
アプリケーションが Java EE スタックを使用しており、 休止状態 を使用できます コンパスフレームワーク データベースの検索可能なインデックスを維持します。Compass フレームワークは次のことを使用します。 ルシーン フードの下。
唯一の問題は、検索インデックスを複製できないことです。したがって、クラスター化データベースを使用してインデックス テーブルを保持するか、Compass Framework 2.x に追加された新しいグリッド ベースのインデックス ストレージ メカニズムを使用する必要があります。