通常、検索すると、ストーリーのリストがあり、検索ストリングを提供し、特定の検索ストリングがストーリーと一致する結果のリストを返すことを期待しています。検索文字列をPythonのコンテンツに一致させる方法
私がやりたいことは、反対です。検索文字列と1つのストーリーのリストを与え、そのストーリーに一致する検索文字列を見つけます。
これはreで行うことができますが、ここではsolrでサポートされているような複雑な検索クエリを使用したいと考えています。 query syntax hereの詳細注:私はブーストを使用しないでください。
基本的に私は、下のサンプルコードでは、doesitmatch関数のいくつかのポインタを取得したいと思います。
def doesitmatch(contents, searchstring):
"""
returns result of searching contents for searchstring (True or False)
"""
???????
???????
story = "big chunk of story 200 to 1000 words long"
searchstrings = ['sajal' , 'sajal AND "is a jerk"' , 'sajal kayan' , 'sajal AND (kayan OR bangkok OR Thailand OR (webmaster AND python))' , 'bangkok']
matches = [[searchstr] for searchstr in searchstrings if doesitmatch(story, searchstr) ]
編集:は、さらにまた、任意のモジュールは、正規表現の中に以下のようなLuceneのクエリを変換するために存在するかどうかを知るために興味がある:
sajal AND (kayan OR bangkok OR Thailand OR (webmaster AND python) OR "is a jerk")
これに私の検索エンジン(solr)を使用する際の問題は、リストsearchstringsの上のコードが10,000語のフレーズを持つことです。ストーリーごとに10,000回の検索サーバーにヒットすることは理想的ではありません。非常に高価になります。 私は複雑なものを使用していません:AND、OR、引用符と括弧 私は、正規表現に変換する関数を書こうと思っていますが、私のような関数が既にPython ... – sajal