摘要: 一直对网站程序的搜索功能不太满意。网站使用的是Whoosh全文搜索引擎,实现了网站内文档的全文检索,但是一直没有实现针对分类的搜索功能。 最近网站整合的差不多了,开始逐步完善网站的功能,最先想解决的,就是针对不同类别,进行搜索的功能。 重新看 Whoosh 文...
一直对网站程序的搜索功能不太满意。网站使用的是Whoosh全文搜索引擎,实现了网站内文档的全文检索,但是一直没有实现针对分类的搜索功能。
最近网站整合的差不多了,开始逐步完善网站的功能,最先想解决的,就是针对不同类别,进行搜索的功能。
重新看 Whoosh 文档,从里面找条件检索的方法,发现实现起来还是比较简单的。核心代码如下:
def search_pager(self, keyword, catid = '',page_index=1, doc_per_page=10):
q = parser.parse(keyword)
if catid == '':
pass
else:
q = And([Term("catid",catid),q ])
try:
tt = ix.searcher().search(q, limit=page_index * doc_per_page)
return (tt[(page_index - 1) * doc_per_page: page_index * doc_per_page])
finally:
pass
源代码可参见: https://github.com/bukun/TorCMS/blob/master/src/torcms/core/tool/whoosh_tool.py