私はMongoDBに大規模な銀行データベースを構築しました。私はこの情報を簡単に取り、whooshでインデックスを作成することができます。たとえば、私は銀行名の「Eagle Bank & Trust Co of Missouri」と「Eagle Bank and Trust Company of Missouri」を照合することができます。次のコードは、簡単なファジーなと動作しますが、上記の試合を達成することはできません。PythonでWhooshを使ったファジーストリングの検索
from whoosh.index import create_in
from whoosh.fields import *
schema = Schema(name=TEXT(stored=True))
ix = create_in("indexdir", schema)
writer = ix.writer()
test_items = [u"Eagle Bank and Trust Company of Missouri"]
writer.add_document(name=item)
writer.commit()
from whoosh.qparser import QueryParser
from whoosh.query import FuzzyTerm
with ix.searcher() as s:
qp = QueryParser("name", schema=ix.schema, termclass=FuzzyTerm)
q = qp.parse(u"Eagle Bank & Trust Co of Missouri")
results = s.search(q)
print results
は私を与える:
<Top 0 Results for And([FuzzyTerm('name', u'eagle', boost=1.000000, minsimilarity=0.500000, prefixlength=1), FuzzyTerm('name', u'bank', boost=1.000000, minsimilarity=0.500000, prefixlength=1), FuzzyTerm('name', u'trust', boost=1.000000, minsimilarity=0.500000, prefixlength=1), FuzzyTerm('name', u'co', boost=1.000000, minsimilarity=0.500000, prefixlength=1), FuzzyTerm('name', u'missouri', boost=1.000000, minsimilarity=0.500000, prefixlength=1)]) runtime=0.00166392326355>
私はヒューという音で欲しいものを達成することが可能ですか?他のPythonベースのソリューションは何ですか?
素晴らしいものを、ありがとう – cedbeu