Xapian ( Python ) 之 TermGenerator 的简单理解和使用示例
2011-09-15 10:20
736 查看
首先,创建一个索引库,代码如下:
搜索的代码:
搜索代码如下:
调用:
搜索的代码:
import posixpath base = posixpath.abspath('.') xapian_database_path = posixpath.join(base, u'index') def index(): database = xapian.WritableDatabase(xapian_database_path, xapian.DB_CREATE_OR_OPEN) indexer = xapian.TermGenerator() stemmer = xapian.Stem(u'english') indexer.set_stemmer(stemmer) for s in ['abc', 'def']: doc = xapian.Document() doc.set_data(s) # 设置该文字索引该 doc,我们可以查询 'abc', 'def'来分别查询出它们所索引的 doc indexer.set_document(doc) indexer.index_text(s) database.add_document(doc) database.flush()
搜索代码如下:
def search(query_string): try: database = xapian.Database(xapian_database_path) except xapian.DatabaseOpeningError: return enquire = xapian.Enquire(database) query_parser = xapian.QueryParser() stemmer = xapian.Stem('english') query_parser.set_stemmer(stemmer) query_parser.set_database(database) query_parser.set_stemming_strategy(xapian.QueryParser.STEM_SOME) query = query_parser.parse_query(query_string) enquire.set_query(query) matches = enquire.get_mset(0, 10) print '%i results found.' % matches.get_matches_estimated() print 'Results 1 - %i:' % matches.size() for match in matches: print '%i: %i%% docid=%i [%s]' % (match.rank+1, match.percent, match.docid, match.document.get_data() )
调用:
search('abc') # 搜索到数据 search('def') # 搜索到数据 saerch('XXXX') #搜索不到数据
相关文章推荐
- Python使用matplotlib简单绘图示例
- 使用Python编写简单的画图板程序的示例教程
- python中requests和https使用简单示例
- 使用Python的Scrapy框架编写web爬虫的简单示例
- Python中使用urllib2模块编写爬虫的简单上手示例
- Python中使用插入排序算法的简单分析与代码示例
- Python 正则表达式的简单使用示例
- urllib库的简单使用 && 一个简单的Python爬虫示例
- Python中使用urllib2模块编写爬虫的简单上手示例
- 在python中使用c语言扩展模块的简单示例
- 深入理解Python单元测试unittest的使用示例
- Python(2.7.x)使用SMTP发送邮件的简单示例
- Python简单定义与使用二叉树示例
- Python中subprocess的简单使用示例
- python使用nsq简单示例
- Python-memcached的基本使用(python 中使用memcached简单示例)
- Python简单定义与使用字典dict的方法示例
- 使用Python的Bottle框架写一个简单的服务接口的示例
- Mac平台上Python的MySQLdb库的使用及数据库简单概念理解