0

各レコードに約 200 ~ 400 文字の 10,000 ~ 50,000 レコードのバッチを処理します。検索語句の数は 1,500 を超えないと予想されます (すべてローカル ビジネスに関連するものです)。

構造化されたタグを用語のリストと比較してデータにタグを付ける関数を作成したいと考えています。

これらの用語は、ビジネスの説明に基づいています。したがって、たとえば、 、[Jazz Bar][Nightclub][Sports Bar]または[Wine Bar]はすべて のクエリに対応し[Bar]ます。

通常、このデータには何らかの既存のタグが含まれているため、最初のパスで厳密な階層を作成し、決定的な既存のタグがない場合は 2 番目のパスを実行することもできます。

これを実装する最もパフォーマンスに敏感な方法は何ですか? すべてのキーワードを含むテーブルを作成し、それらを各データと照合することができます。これは、既存のタグを照合する場合は簡単ですが、フリー テキストを処理する場合はそれほど簡単ではありません。

Heroku/Postgresql を使用しています

4

1 に答える 1

0

Sphinx検索エンジンとThinkingSphinxRubygemを使用するのはかなり安全な賭けです。はい、いくつかの構成のオーバーヘッドがありますが、Sphinxが失敗したシナリオはまだ見つかりません。:-)

これを設定するのに30〜60分かかる場合は、試してみてください。私はSphinxを使用して、複雑なクエリ(3つの個別の検索条件+ 2つの個別のフィールドグループ化/並べ替え)を含む600,000以上のレコードを含むDBテーブルを検索してきましたが、0.625秒で結果が得られましたが、これはまったく悪くありません。純粋なRubyコードで自分で達成できるものよりもはるかに優れています。

于 2012-11-08T23:15:19.560 に答える