Как удалить документ из индекса по его пути в Whoosh - PullRequest
0 голосов
/ 29 мая 2019

Сначала я добавляю документы в индекс следующим образом:

writer.add_document(title=doc_path.split(os.sep)[-1], path=doc_path, content=text, textdata=text)

И тогда мне просто нужно полностью удалить один из них из индекса по его пути. Документация гласит, что для этого не существует низкоуровневых методов:

delete_by_term (имя поля, termtext)

Удаляет любые документы, в которых данное (проиндексированное) поле содержит данный срок. Это в основном полезно для полей ID или KEYWORD.

delete_by_query (запрос)

Удаляет все документы, соответствующие данному запросу.

но я не могу найти подходящий и очень удобный метод для меня, где я могу указать путь к документу и просто удалить его. Есть какой-то низкоуровневый метод, в котором я могу указать внутренний номер документа, который я должен каким-то образом получить. Кто-нибудь может дать мне совет, как лучше выполнить эту задачу?

1 Ответ

0 голосов
/ 29 мая 2019
ix = open_dir('/my_index_dir_path/..')
writer = ix.writer()
writer.delete_by_term('path', doc_path)
writer.commit()

delete_by_term

метод делает именно то, что мне нужно.Обратите внимание, что первым аргументом является текстовая строка 'path', и они идут по фактическому пути.Моя ошибка заключалась в том, что вместо имени атрибута указывался фактический путь.

...