Поиск по нескольким полям с полевыми фильтрами

Я использую whoosh для индексации и поиска по моим документам. Я разработал поиск по нескольким полям, но хочу указать некоторые обязательные поля.

Что я хочу: когда я ищу книгу с запросом q1, он ищет по названию и резюме, но я хочу указать некоторые фильтры, такие как autor = «имя автора» и категория = категория книг.

Результаты должны учитывать два поля «ОБЯЗАТЕЛЬНО» и выполнять поиск по двум другим.

спасибо за помощь


person noaai    schedule 23.07.2020    source источник


Ответы (1)


Вы можете использовать whooshMultifieldParser для этого сценария

from whoosh.qparser import MultifieldParser

fields = ["title", "summary", "author", "category"]

query = MultifieldParser(fields, schema=idx.schema, group=qparser.OrGroup).parse(q1)
with idx.searcher() as searcher:
    results = searcher.search(query, limit=limit)
    ...........

Выше используется Or Group, которая будет искать по всем полям с оператором or. В соответствии с вашими потребностями вы можете настроить их. подробнее об операторах здесь, например and not и т. д. .

person Kekayan    schedule 20.05.2021