排序python whoosh结果

2024-10-03 15:35:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这段代码:

from whoosh import index, qparser

def find(text, indexDir, _doc_schema):
    parser = qparser.QueryParser("content", schema=_doc_schema, termclass=FuzzyTerm)
    query = parser.parse(text)
    index = index.open_dir(indexDir)
    with index.searcher() as searcher:
        for res in searcher.search(query, limit=limit, terms=True):
             result = {
                   "classname": res["classname"],
                   "code": res["code"],
             }
             if highlights:
                  result["text"] = res.highlights("content")
             print "Res ", result['text']
             print "Matched terms ", res.matched_terms()
             yield result

有没有办法在搜索时根据相关度对匹配的_项进行排序?所以,如果我要找的是“aaa”,我希望“aaa”先出现,但它们可能在“aab”结果之后。在


Tags: textparserindexdocschemaresresultcontent
1条回答
网友
1楼 · 发布于 2024-10-03 15:35:27

如果将匹配的术语与结果一起生成,则可以为结果构建术语词典:

yield result, res.matched_terms()

然后构建字典:

^{pr2}$

然后可以按以下顺序遍历字典:

>>> for term in sorted(d.keys()):
...     print key, result['classname'], result['code']

相关问题 更多 >