0

毎日、500 万個ほどのユニークなキーワードがあり、それぞれのインプレッション数があります。これらのキーワードを特定の単語で検索できるようにしたいので、たとえば「ipod nano 4GB」を持っている場合、「ipod」、「nano」、または「4GB」を検索するとそれを引き出すことができるようにしたいと考えています。mySQL は、私が望むほど多くのデータを処理できないようです。Berkeley を試しましたが、行が多すぎるとクラッシュするようで、速度が低下します。アイデア?

4

5 に答える 5

2

Xapian 検索エンジン ライブラリには非常に満足しています。あなたのシナリオではやり過ぎのように思えますが、データをmemcachedのような大きなハッシュテーブルに入れたいだけかもしれません。

于 2009-06-16T20:18:54.067 に答える
1

mssql でフリー テキストを試すことができます。 http://msdn.microsoft.com/en-us/library/ms177652.aspx

クエリの例:

SELECT TOP 10 * FROM searchtable 
INNER JOIN FREETEXTTABLE(searchtable, [SEARCH_TEXT], 'query string') AS KEY_TBL
ON searchtable.SEARCH_ID = KEY_TBL.[KEY] 
ORDER BY KEY_TBL.RANK DESC

ジョシュ

于 2009-06-16T20:02:15.023 に答える
1

Luceneインデックスが機能する場合があります。以前はかなり大きなデータセットに使用していました。Java で開発されていますが、.NET バージョンもあります。

于 2009-06-16T20:04:30.820 に答える
0

MySQL で全文検索を試しましたか? LIKE 比較で試してみると、遅い理由がわかります :)。

于 2009-06-16T20:23:33.950 に答える
0

そのワークロードと検索パターンは、統合された全文検索機能を備えた PostgreSQL にとっては些細なことです (8.4 で統合され、現在 RC ステータスになっています。それ以前は contrib モジュールです)。

于 2009-06-18T14:06:14.220 に答える