Я пытаюсь заставить функцию выделения работать с документами, полученными из запроса. Это код, который я использую:
import whoosh.index
from whoosh.qparser import QueryParser
from whoosh import scoring
from whoosh.index import open_dir
from whoosh import qparser
from whoosh import searching
from whoosh.searching import Hit
from whoosh import highlight
from whoosh.highlight import WholeFragmenter
ix = open_dir("indexdir")
# query_str is query string
query_str = "accountability"
#Top 'n' documents as result
topN = int("5")
og = qparser.OrGroup.factory(0.9)
query = qparser.QueryParser("textdata", schema = ix.schema, group = og)
q = query.parse(query_str)
with ix.searcher(weighting=scoring.TF_IDF()) as searcher:
results = searcher.search(q, terms = True, limit=topN)
results.fragmenter.charlimit = 100
my_cf = highlight.SentenceFragmenter(maxchars=100, sentencechars='.!?')
results.fragmenter = my_cf
for i in range(topN):
print(results[i]['title'], str(results[i].score), results[i].highlights('textdata'))
Это результат, который я получил
Users 13.027961778148635 They see it as
a waste of money with no <b class="match term0">accountability</b>
Users 8.68530785209909
Users 8.68530785209909 However, what we are here today to do is deter-
mine if <b class="match term0">accountability</b> is emerging
Users 8.68530785209909 The witnesses are here for the purposes
of <b class="match term0">accountability</b>
Users 4.342653926049545 Deputy Catherine Connolly: We cannot examine the minutiae but only governance and
<b class="match term0">accountability</b>
Помимо заголовка, который возвращает первый каталог пути вместо фактического заголовка документ, мне нужно, чтобы выделенный текст был выделен. Если я использую результаты [i] ['textdata'] вместо результатов [i] .highlights ('textdata'), я получаю фактическую страницу текста, в которой извлекается термин. Я пытался со всеми видами модифицированных кодов, полученных из оригинальных документов, но ничего не делать.