0

現時点では、これに似た検索エンジンを構築しようとしてい ます http://www.indeed.com/jobs?q=sales&l= (私の最大の関心事は、左側の検索フィルターです。異なるパラメータによる検索結果)。

現在使用しているデータベースは MySQL です。私はいくつかの初期調査を行いましたが、mysql インデックスを正しく使用していないことが問題の原因であると人々から言われ続けました。mysql のインデックスやキャッシングなどの詳細な調査に数か月を費やしましたが、mysql が提供するものでこの問題を解決する方法はまったくないことがわかりました。Bツリーは良いことですが、制限があり、複数の列で同時にすべてのタイプの検索(フルテキスト、範囲など)を許可する種類のインデックスを設定する方法はありません(さらにgroup-byすべてを最後に複数回)。

さらにグーグルで話し合った結果、これらの種類のタスクを解決できるとされる Sphinx と呼ばれるものを発見しました。しかし、Sphinx がこれをどのように達成するかを正確に説明し、説明する素晴らしい本や研究を見つけることができないようです。これがどのように機能するか、または少なくとも良い本の方向性を教えていただければ、それは素晴らしいことです! 基本的に、Sphinx の背後にあるテクノロジーが、私が直面している問題を解決できることを 100% 確実に理解したいと思っています。

ありがとう!

4

1 に答える 1

1

最も基本的なこととして、Sphinx は逆インデックスhttp://en.wikipedia.org/wiki/Inverted_indexを実装しています。

これは、全文検索に適しています。偶然にも、Mysql の「FULL TEXT」インデックスも転置インデックスを使用していることは確かです。

一般に、Sphinx は mysql よりも検索に適しています。これは、「ボルトオン」ではなく、タスク用に設計されたツールであるためです。より多くの構成オプションがあります。Sphinx はパフォーマンスにも大きな力を入れており、それを実装するために多大な努力を払っています。たとえば、高速なインデックス ルックアップのために、属性はメモリに保持されます。

また、複数の最適化を使用して同じデータセットに対して複数のクエリを実行する「マルチクエリ」などの機能もあり、これらのタイプのインターフェースを構築するのに非常に役立ちます。

...そのため、sphinx のセットアップはより複雑になりますが、最終的に結果がうまくいけば、努力する価値があるでしょう!

スフィンクス自体の利点を説明している文書は知りません。「ハイパフォーマンスmysql」には一読の価値がある章がありますが、スフィンクスが「どのように」動作するかについては触れていません。

http://www.slideshare.net/freelancing_god/sphinx-beyond-the-basics 詳細: https://www.google.co.uk/search?q=sphinx+talk彼ら はスフィンクスの力の概要をつかむには良い方法かもしれません。

この本当に技術的なドキュメントもあります: http://sphinxsearch.googlecode.com/svn/trunk/doc/internals-index-format.txt

(ちなみに、「左側のもの」はファセットと呼ばれます。スフィンクスはファセットをうまく処理します。専門用語があると研究に役立つかもしれません。しかし、スフィンクス自体は一般にそれらを「グループ化」またはクラスタリングと呼んでいます)

于 2012-04-23T13:44:55.517 に答える