在 results() 对象中显示所有命中

Show all hits in results() object Whoosh

我是 python 的新手,所以可能是因为我很难 打印搜索后返回的所有匹配项

这是我的代码:

from whoosh.qparser import QueryParser
with ix.searcher() as searcher:
    query = QueryParser("title", ix.schema).parse("hd")
    results = searcher.search(query)
    print results[0]
    print results
    print len(results), 'resultados'

这是输出:

<Hit {'brand': u'Best Buy', 'title': u'best buy easy snap hd', 'superpadre': u'audio foto video', 'familia': u'videocamaras', 'detalle_short': u'Easy Snap HD es una pequena videocamara con grabacion en alta definicion ideada para poder llevarla a cualquier lugar. Su ligero peso y su visor TFT LCD de 2,7  con'}>
<Top 10 Results for Term('title', u'hd') runtime=0.000622987747192>
18 resultados

看起来你已经在正确的轨道上了。但实际上可能只有一个结果。

根据whoosh docs,呼叫:

len(结果)

照原样,给出搜索匹配的总数。

因此,如果结果在此处显示“1 个结果”,则很可能所有这些都已编入索引。

要打印所有结果,您应该只遍历对象 results:

for r in results:
        print r
        print "title :", r["title"] # print the title of each result.

已接受的答案具有误导性;它将为您提供搜索中 "limit" 参数限制的命中数。

要修改该限制,请使用:

results = searcher.search(query, limit=None)

用于搜索。