2011-04-14 6 views
0

私は多くの小文字(約500語と言うことができます)と、約10.000件ずつの2つのデータベース(キーワード)を持っています。小文字での効果的な検索

ここで、すべてのテキストを処理して、どのキーワード(2つのデータベースに保存されているキーワード)がテキストに含まれているかを確認します。

これを効果的に行う方法については、誰かが良いアプローチをしていますか?

データベースを検索する前にすべてのテキストを処理して索引付けしたいと思っていましたが、実際にはそれが正しいツールであるかどうかはわかりません。

答えて

3

Luceneは、このタスクのための正確なツールです。

目標を達成する1つの方法は、RAMDirectoryを使用して各テキストにインデックスを付け、IndexReaderを使用してインデックスからTermEnumを取得することです。これで、DB内のキーワードと条件を一致させることができます。

もう1つの方法は、すべてのテキストをluceneドキュメントとして索引付けし、キーワードを繰り返して、現在の用語=>現在の用語/キーワードを含むすべてのテキストのtermDocsを取得することです。

+0

私はすでにあなたの最初のアプローチについて思い知らされました。なぜあなたはtermenumをお勧めしますか?私はそれを理解するので、termenumはあなたがテキスト内の特定の用語の頻度を必要とするときに便利です。 – Nicolas

+0

@Nicolas:私はあなたがTermFreqVectorを意味すると思います。 TermEnumは、索引のすべての用語=> RAMDirectoryを使用して索引付けした文書内のすべての用語を提供します。 – csupnig

0

テキストを検索するには、何らかの方法でインデックスを作成する必要があります。

1)は、MySQLのDBにあなたの文章をロードし、あなたが言うように、検索フィールド/列のフルテキスト

2)、Luceneのでインデックスを作る:あなたは2つのオプションがあります。

次に、キーワードをリストに読み込んでループし、Lucene/MySQLに対してクエリを実行します。

データセットが大きくない場合は、MySQLを使用します。設定がはるかに高速です。

関連する問題