通常、検索するときは、ストーリーのリストがあり、検索文字列を提供し、指定された検索文字列がストーリーと一致する結果のリストを期待します。
私がやろうとしていることは、その反対です。検索文字列のリストと1つのストーリーを提供し、どの検索文字列がそのストーリーに一致するかを調べます。
これはreで実行できますが、ここでのケースは、solrでサポートされている複雑な検索クエリを使用したい場合です。クエリ構文の詳細については、こちらをご覧ください。注:ブーストは使用しません。
基本的に、以下のサンプルコードでdoisitmatch関数のポインタを取得したいと思います。
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")