2008-08-29 11 views
54

ウェブサイトの検索機能を実装したい(それはSOと似ていると仮定します)。私はそのようなもののGoogle検索を使用したくない。ウェブサイトで検索機能を実装するにはどうすればよいですか?

私の質問は:

どうすれば実装できますか?

私が知っ2つの方法があります。

  1. ユーザがクエリを与えたときに、アプリケーション内のすべてのデータベースを検索するには。
  2. 私が持っているすべてのデータをインデックス化し、他の場所に保存してそこからクエリを実行します(Googleと同じように)。

どのようにすればいいですか?長所と短所は何ですか?

これより良い方法がありますか?

答えて

33

使用のLucene、
http://lucene.apache.org/java/docs/

はApache Luceneには、完全にJavaで書かれた高性能、フル機能のテキスト検索エンジンライブラリです。フルテキスト検索、特にクロスプラットフォームを必要とするほぼすべてのアプリケーションに適したテクノロジです。

javaと.netで利用できます。また、zend frameworkモジュールの形でphpで利用できます。

Luceneは、検索したアイテムのインデックス付けを行いますが、ルーネンインデックスを追跡する必要がありますが、パフォーマンスに関してデータベース検索を行うよりもはるかに優れています。ところで、SO検索はluceneによって行われます。 :D

+0

Luceneを検討しているなら、本当にSolrプロジェクトを見てください。サービスとしてLuceneと考えてください – sclarson

4

xapianomegaのフロントエンドを見たい場合があります。基本的には、検索機能を構築するためのツールキットです。

1

これに最も効果的なアプローチは、ページの構成方法によって異なります。

多くの異なるレコードから構成されている場合(スタックオーバーフローページがあると思います)、インデックス作成のアプローチは、データベース上のページを効果的に再構築する作業が多い場合を除き、側。

インデックス作成のアプローチの欠点は、ターンアラウンドタイムです。 (Googleのサイトマップのような)回避策がありますが、それは正しいことも複雑です。

データベースパスを使用する場合は、処理するリンクデータがある場合は最新の検索エンジンシステムが機能するので、データベース内の「ページ」間のリンクを理解できるシステムを見つけることは効果的です。

0

これはあなたの質問にいくらか直交していますが、私はRESTful検索のアイデアを強くお勧めします。すなわち、一度も実行されていない検索を実行するために、ウェブサイトは/ searching /にクエリをPOSTします。検索を再実行するには、ウェブサイトの検索/検索/ {some id}

たとえば、hereなど、これに関するいくつかの良い文書があります。(それが最適化され、したがって、時期尚早かも知れません、可能であれば、私は、インデックスが好き、と述べた。)

-1

あなたのアプリケーションは、Java EEのスタックを使用して、あなたがCompass Frameworkを維持使用することができますHibernateを使用している場合データベースの検索可能なインデックス。 Compass Frameworkはフードの下でLuceneを使用します。

唯一のキャッチは、検索インデックスを複製できないことです。したがって、クラスター化されたデータベースを使用してインデックステーブルを保持するか、Compass Framework 2.xに追加された新しいグリッドベースのインデックスストレージメカニズムを使用する必要があります。

1

Microsoft plattformの場合は、インデックスサービスを使用できます。これは非常に簡単にIISのWebサイトに統合されます。

フルテキスト検索、ランキング、exlcudeなどの基本機能をすべて備えており、特定のファイルタイプを含めることができます。また、HTMLページのメタタグを使用して独自のメタ情報を追加することもできます。

Googleを実行すると、トンを見つけることができます!

30

これは、あなたのウェブサイトがどれほど包括的で、自分がどれくらいしたいかによって異なります。

カスタム検索を追加するためにさらなる可能性なし小さなウェブサイトを実行している場合、Googleは仕事を(多分sitemapを追加)とgoogle custom searchを使ってみましょう。

媒体サイトとSQLエンジンを実行すると、SQLエンジンの検索機能が使用されます。

、あなたのアプリケーションから抽象的な検索したい場合は、J2EEや.NETを使用Lucene、偉大な、強力な検索エンジンやそのネットのクローンlucene.Net

のようないくつかの重いソフトウェアスタックを実行する場合とXML/HTTPとJSON APIを使用して言語に依存しない方法でクエリを実行できるようにするには、solrをご覧ください。 Solrはバックグラウンドでluceneを実行しますが、そこに素敵なWebインターフェイスを追加します。

+3

私はこれについて質問します。イントラネットサイトのGoogleカスタム検索を実装できますか?私がこれを行うと私の会社は危険にさらされますか?私は自分の論理を書こうとはしません。 – Richie

+0

Googleカスタム検索が削除されました。 MicrosoftにはBingの考え方があります。 – demaniak

関連する問題