私は製品を含むサイトのミニ検索エンジンを作ろうとしています。私はすでにフルテキスト検索、LIKE句などを検討してきましたが、データベースが数千億もの巨額になるため、私はまだ進んでいきたいと考えています。複雑なmysqlのselect文
デザインは次のようなものになります。単語と単語のペアになっている表があります。私は製品が一致する製品IDにすべての単語IDのペアを含む別のテーブルを持っています。ユーザーが「2GBのメモリカード」を検索すると、スクリプトは「2GB」「メモリ」と「カード」を解析します。
それから私は使用:
SELECT pid
FROM indx_0
WHERE wid = 294 OR wid = 20591 OR wid = 330
は私が製品に一致する単語のペアで終わります。
私は、複数のものに応じてトップに行く製品を決定するPHPアルゴリズムを持っています。しかし、380kの結果をPHPの配列にロードすると、実行時間が非常に遅くなります。私はそれをすることはできません。しかし、もし私が1単語につき1000件の結果を出すことができれば、実行は高速ですが、すべての可能な結果が含まれているわけではありません。 "indx_0"テーブルの "pid"(製品ID)は "wid"(単語ID)に固有です。明らかに、一部の製品は1つ以上の一致を持つことになります。私は "wid"に対して最もマッチした "pid"を検索したい。
"2gb"と一致する200個の商品と200,000個の一致する "カード"と50,000個の一致する "メモリ"がありますが、それらの単語のすべて3個に一致する20個の商品と、
部分的に一致する20個の製品と200個の製品を取り出すことは可能ですか?
ワウありがとうございました!私が変更する必要があったのは1つだけです。 "どこにいるのか"は実際には "どこにいるのか"です。それ以外は私が望んでいたのと同じように動作します。 – nick