2009-07-29 3 views
2

私は都市のロケーション検索websiteを持っています。私たちは、学校、大学、部店などのすべてのカテゴリのデータを収集し、それぞれのエントリは名前、住所、電話番号とは別の細部を持っていたので、別のテーブル。バックエンドがMYSQLのウェブサイトに検索を統合

私たちは人々が情報を見つけることを可能にするために検索をウェブサイトに統合しなければならなかったので、私たちは同じカテゴリのカテゴリと関連するキーワードと、そのカテゴリが検索されたために。後で、すべてのテーブルのフィールドを含む別のマスターテーブルを1つの場所に追加することによって、名前と住所を検索する機能も追加しました。今、私の疑問は、私たちのデータベースはMySQLとPHPはサーバーサイド上にあるため、すべての上に、以下の

  • アプリケーションの設計が不適切である、と私たちは*マスターからどこの名前は「%$入力%」のような選択のようなクエリを書かれているですシステムの設計を改善するための提案はありますか?
  • 人々は、キーワードを分割し、関連性などに従ってランク付けするなどのより多くの機能を望んでいます。データベースで検索を実行する準備ができているフレームワークがあります。
  • 私はMYSQLでフルテキスト検索を使用しようとしましたが、それは私には効果的と思われます、それは十分ですか?

私が間違っていると私はLuceneとGoogleカスタム検索を調べましたが、既存のウェブページをクロールして独自のインデックスを作成してインデックスを作成していませんか?私は検索を適用する必要があるmysqlデータベースのテーブルのコレクションを持っています。どのようなオプションがありますか?

答えて

3

がいかに素晴らしい絶賛:

%を使用して
  1. 入力%は非常に悪いです。そうすれば、すべてのクエリでフルテーブルスキャンが実行されます。任意の量のロードまたは遠隔の大規模なデータセットであっても、DBサーバーが停止します。

  2. RDBMSだけではこれには適していません。あなたは検索のための別のソリューションを探して、適切な場所を探しています。あなたのRDBMSとうまくやりとりできるものが良いです。 RDBMSの中で実行されるものは、必要なものを実行しません。

  3. MySQLでのフルテキスト検索は、非常に基本的なキーワード検索には対応できません。有用性の範囲は非常に限定されています。組み込みの検索を活用するには、予測可能な使用モデルが必要です。それは "検索"と呼ばれますが、実際にはほとんどの人がそれを考えているわけではありません。 GoogleとBingから期待される検索結果の品質と比較すると、それは比較されません。 「検索」という言葉の意味では、メモ帳とWordのようなものです。彼らはどちらも入力するものですが、それはそれについてです。

検索を扱う別のシステムでは、Luceneは非常に優れています。 Luceneは本質的にうまく動作します。あなたはそれをプログラム的に操作して、索引付け可能な文書を挿入することができます。同様に、Google ApplianceGoogle Custom Searchではなく)に直接メタフィードを与えることができます。このメタフィードは、データベースから直接データを取得するなど、インデックスを作成したいものを公開します。

+0

データベースでluceneを動作させるにはどうすればよいですか? –

+0

@AnirudhはAPIドキュメントを読んでいます。データベースを定期的に実行するスタンドアロンプ​​ログラムを作成し、Luceneインデックスを更新するか、新しいレコードを挿入する際にアプリケーションでLuceneインデックスを更新する必要があります。 –

2

スフィンクスを見てみましょう:自分のサイト毎のhttp://www.sphinxsearch.com/

を:

どのようにして、その10+百万行のテーブルのフルテキスト検索を実装して、負荷に追いつくと、関連滞在ん?スフィンクスはそのような謎にぴったりです。

それは今のレールのコミュニティの多くの人々と非常に人気だし、彼らはすべてのそれはあなたのポイントに対処するために:)

関連する問題