У меня есть веб-приложение, которое выполняет поиск по нескольким базам данных, некоторые сохраненные данные находятся в верхнем регистре, а некоторые в верхнем и нижнем регистре, однако при поиске по ключевому слову я хочу, чтобы он игнорировал регистр и просто выводил результаты, которыесоответствовать слову. например, я хочу выполнить поиск по «document_reference» без необходимости писать правильный способ его сохранения, то есть «Document_Reference»
Мне сказали добавить нечувствительность к регистру в мой индекс, но я не уверен, что делать или добавлять тудаЯ пытался это (нашел в документации Whoosh)
class CaseSensitivizer(analysis.Filter):
def __call__(self, tokens):
for t in tokens:
yield t
if t.mode == "index":
low = t.text.lower()
if low != t.text:
t.text = low
yield t
это то, что мой индекс и анализатор запросов выглядит как
def open_index(indexDirectory):
# open index and return a idex object
ix = index.open_dir(indexDirectory)
return ix
def search_index(srch, ix):
# Search the index and print results
# ix = open_index(indexDirectory)
results = ''
lst = []
qp = MultifieldParser(['Text', 'colname',
'tblname', 'Length', 'DataType', 'tag_name'],
schema=ix.schema, group=qparser.OrGroup)
# qp = QueryParser('Text', schema=ix.schema)
q = qp.parse(srch)
with ix.searcher() as s:
results = s.search(q, limit=None)
for r in results:
print('\n', r)
lst.append(r.fields())
if(DEBUG):
print('Search Results:\n', lst)
print('\nFinished in search.py')
return lst
в настоящее время он только дает результаты, которые точно соответствуют тому, что я набралв строке поиска, поэтому, если я наберу «документ», но источник на самом деле хранится как «ДОКУМЕНТ», я не получу никаких результатов