Обычно, когда мы ищем, у нас есть список историй, мы предоставляем строку поиска и ожидаем список результатов, где заданные строки поиска соответствуют истории.
То, что я хочу сделать, это наоборот. Дайте список строк поиска и одну историю и выясните, какие строки поиска соответствуют этой истории.
Теперь это можно сделать с помощью re, но в данном случае я хочу использовать сложные поисковые запросы, поддерживаемые solr. Полная информация о синтаксисе запроса здесь . Примечание: я не буду использовать повышение.
В основном я хочу получить несколько указателей на функцию doitmatch в приведенном ниже примере кода.
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")