2010-12-14 7 views
2

多くの文書(100万以上)で多くの単語(1000+)を検索することがよくあります。一致する単語の位置が必要です(一致する場合)。Pythonを使用して多くの文書で多くの式を検索する

コードの

ので遅い疑似バージョンは

for text in documents: 
    for word in words: 
      position = search(word, text) 
      if position: 
        print word, position 

でこれを行うための任意の高速なPythonモジュールはありますか?それとも自分で何かを実装するべきですか?

+0

1000語の単語に対して何百万語の文書がありますか?なぜあなたのソリューションはそこにある何十ものソリューションよりも優れていると思いますか?何百万もの文書が些細なことではありません。 – Falmarri

+0

@Falmarri:問題のポイントは、Pythonモジュール形式で数十のソリューションの1つを見つけることだと思います。 – nmichaels

+0

基本的にフルテキストインデックスが必要ですか? –

答えて

4

、アコラを試してみてください - http://pypi.python.org/pypi/acora/1.4

あなたは、いくつかの余分たい場合 - 結果の関連性、ほぼ一致し、ワード応援など、ヒューという音が良いかもしれないが - http://pypi.python.org/pypi/Whoosh/1.4.1

何百万ものドキュメントにどれだけスケーラビリティがあるのか​​よく分かりませんが、それを見つけるのに時間がかかりません!

+1

既存の全文索引検索システムは間違いなく道のりです。 –

+0

ヒントをありがとう、まさに私が望んでいた。 –

1

grepの何が問題になっていますか?

だから、あなたはpythonを使用する必要がありますか?方法:

import subprocess 

subprocess.Popen('grep <pattern> <file>') 

これは非常識です。しかし、ちょっと!あなたはPythonを使用しています;-)

+0

Grepは問題ありませんが、Pythonを使用する必要があります。そして、私はこれがPythonにとっては問題ではないと思います。 –

0

documentsが文字列のリストであると仮定すると、最初のオカレンスを見つけるのにtext.index(word)、オカレンスの総数を見つけるのにtext.count(word)を使用できます。あなたの擬似コードは、単語が一度しか出現しないと思われるので、text.count(word)は不要です。速く正確なテキスト、マルチキーワード検索のために

関連する問題