的Xapian docs说说查询构造函数的一个术语位置参数术语位置参数,在语句中使用搜索:如何使用Xapian的查询构造
报价:
此构造函数实际上需要几个额外的参数,其 可以用于指定在查询项 位置和频率信息:
3210term_pos表示查询中该术语的位置。同样, 这对单个词条查询本身没有用处,但用于 词组搜索,段落检索和其他操作,其中 需要知道查询中词条的顺序(例如 返回在查询中发生的同一 订单中给定文档中的条款匹配)。如果此类操作不是 必需的,则可以使用默认值0。
和参考,我们有:
Xapian::Query::Query ( const std::string & tname_, Xapian::termcount wqf_ = 1, Xapian::termpos pos_ = 0 )
由单个项的查询。
和:
typedef unsigned termpos
文档或查询中的一个术语位置。
所以,说我想建立的短语查询:“富酒吧巴兹”,我该如何去做? 是否term_pos_提供相对位置值,即在文档中定义的术语的顺序:
(我在这里使用Python绑定API,因为我比较熟悉它)
q = xapian.Query(xapian.Query.OP_AND, [xapian.Query("foo", wqf, 1),xapian.Query("bar", wqf,2),xapian.Query("baz", wqf,3)])
而且只是为了测试起见,假设我们做的:
q = xapian.Query(xapian.Query.OP_AND, [xapian.Query("foo", wqf, 3),xapian.Query("bar", wqf, 4),xapian.Query("baz", wqf, 5)])
因此,这将给予相同的结果与前面的例子?
而且假设我们有:
q = xapian.Query(xapian.Query.OP_AND, [xapian.Query("foo", wqf, 2),xapian.Query("bar", wqf, 4),xapian.Query("baz", wqf, 5)])
所以现在这将符合其中的文件有“富”,“酒吧”与一个长期分离,其次是“巴兹”?
是这样,还是这个参数指的是索引术语的绝对位置?!
编辑:
以及如何与此有关OP_PHRASE
?我发现使用OP_PHRASE一些在线样本作为这样的:
q = xapian.Query(xapian.Query.OP_PHRASE, term_list)
这使得明显的感觉,但是又是什么的角色说那句term_pos_构造搜索 - 它是一个做事的多个外科手术的方法!?
我建议你在Xapian邮件列表或IRC频道上提问这些问题。这是一个深层次的问题(听起来我们的文档需要一些整理和澄清,以帮助那些想知道的人),所以SO不是讨论这类事情的好地方。 – 2012-08-16 11:03:08
谢谢,我会在那里提出。 – 2012-08-16 21:20:29