如何使用xapian和python匹配精确短语?

时间:2012-07-27 02:53:53

标签: python xapian

这是我的代码:

db = xapian.Database(path/to/database)
enquire = xapian.Enquire
stemmer = xapian.Stem(<supported language>)
query_parser = xapian.QueryParser()
query_parser.set_database(db)
query_parser.set_stemmer(stemmer)
query_parser.set_default_op(xapian.query.OP_OR)
xapian_flags = xapian.QueryParser.FLAG_BOOLEAN | xapian.QueryParser.FLAG_SYNONYM | xapian.QueryParser.FLAG_LOVEHATE
query = query_parser.parse_query('"this exact phrase"', xapian_flags)
enquiry.set_query(query)

这与“这个确切的短语”不匹配(我能够完成除了完全匹配之外的所有内容)。请注意,我已经包含了文档中提到的双引号。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

通过显式设置查询解析器的标志,您可以覆盖默认值FLAG_PHRASE | FLAG_LOVEHATE | FLAG_BOOLEAN。你所做的是打开同义词支持,但关闭短语搜索,这是双引号所依赖的。

请注意,短语搜索与精确匹配并不完全相同,但如果没有更多上下文,则很难建议这种方法是否适合您的情况。