2010-12-14 6 views
2

많은 문서 (백만 +)에서 많은 단어 (1000+)를 자주 검색해야합니다. 일치하는 단어의 위치가 필요합니다 (일치하는 경우). 코드의많은 문서에서 파이썬을 사용하여 많은 표현식을 검색하십시오.

그래서 느린 의사 버전은

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

이 일에 대한 빠른 파이썬 모듈이 있습니까

입니까? 아니면 직접 구현해야합니까?

+0

1000 개 단어에 대한 수백만 문서? 왜 당신의 솔루션이 수십 가지의 솔루션보다 더 좋을 것이라고 생각합니까? 수백만 건의 문서가 사소하지 않습니다. – Falmarri

+0

@Falmarri : 문제의 핵심은 파이썬 모듈 형태로 수 십 개의 솔루션 중 하나를 찾는 것이라고 생각합니다. – nmichaels

+0

기본적으로 전체 텍스트 색인을 원하십니까? –

답변

4

, 아 코라을 시도 관련성이 거의 일치, 단어 응원 등이 붕가있을 수 있습니다 결과 더 나은 - http://pypi.python.org/pypi/Whoosh/1.4.1

수백만 개의 문서가 얼마나 잘 확장되는지 모르지만 알아내는 데 오래 걸리지 않을 것입니다!

+1

기존의 전체 텍스트 색인 검색 시스템은 분명히 갈 길이 있습니다. –

+0

팁을 보내 주셔서 감사합니다. –

1

grep의 문제점은 무엇입니까?

그래서 파이썬을 사용해야합니까? 어때요 :

import subprocess 

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

미친입니다. 그러나 헤이! 당신은

+0

Grep은 괜찮지 만 Python을 사용해야합니다. 그리고 저는 이것이 파이썬에서 문제가되어서는 안된다고 생각합니다. –

0

documents 문자열의 목록입니다 가정 ;-) 파이썬을 사용하고, 당신은 발생의 총 수를 찾을 수있는 첫 번째 항목 및 text.count(word)을 찾기 위해 text.index(word)를 사용할 수 있습니다. 의사 코드는 단어가 한 번만 발생한다고 가정하는 것 같습니다. 따라서 text.count(word)은 불필요 할 수 있습니다. 당신은 몇 엑스트라를 원하는 경우 http://pypi.python.org/pypi/acora/1.4

- - 빠르고 정확한 텍스트, 다중 키워드를 검색하십시오

관련 문제