首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Xapian查询构造函数中使用术语位置参数

如何在Xapian查询构造函数中使用术语位置参数
EN

Stack Overflow用户
提问于 2012-08-15 09:03:37
回答 1查看 472关注 0票数 0

Xapian 文档谈到了一个查询构造函数,该构造函数带有一个术语位置参数,用于短语搜索:

引用:

这个构造函数实际上需要一些额外的参数,这些参数可以用于为查询中的术语指定位置和频率信息: 查询(const& tname_,Xapian::termcount wqf_ = 1,Xapian::termpos term_pos_ = 0) term_pos表示该术语在查询中的位置。同样,这本身并不适用于单个术语查询,而是用于短语搜索、段落检索和其他需要了解查询中术语顺序的操作(例如,以与查询中相同的顺序返回给定文档中的匹配项集)。如果不需要这样的操作,则可以使用默认值0。

在参考资料中,我们有:

Xapian:: query ::Query ( const std::string & tname_,Xapian::termcount wqf_ = 1,Xapian::termpos pos_ =0)由单个术语组成的查询。

和:

类型胡枝子 在文档或查询中的术语位置。

那么,假设我想为短语构建一个查询:"foo baz",我该怎么做呢?!term_pos_是否提供相对位置值(即定义文档中术语的顺序):

(我在这里使用python绑定API,因为我更熟悉它)

代码语言:javascript
复制
 q = xapian.Query(xapian.Query.OP_AND, [xapian.Query("foo", wqf, 1),xapian.Query("bar", wqf,2),xapian.Query("baz", wqf,3)] )

为了测试,假设我们做了:

代码语言:javascript
复制
 q = xapian.Query(xapian.Query.OP_AND, [xapian.Query("foo", wqf, 3),xapian.Query("bar", wqf, 4),xapian.Query("baz", wqf, 5)] )

因此,这将给出与前面的例子相同的结果?!

假设我们有:

代码语言:javascript
复制
 q = xapian.Query(xapian.Query.OP_AND, [xapian.Query("foo", wqf, 2),xapian.Query("bar", wqf, 4),xapian.Query("baz", wqf, 5)] )

因此,现在这将匹配的文件有"foo“"bar”与一个术语分开,然后是"baz“??

是这样,还是这个参数指的是索引项的绝对位置?!

编辑:

OP_PHRASE与此有何关系?我发现一些使用OP_PHRASE的在线示例如下:

代码语言:javascript
复制
q = xapian.Query(xapian.Query.OP_PHRASE, term_list)

这显然是有道理的,但是,上述term_pos_构造函数在短语搜索中的作用是什么--这是一种更外科的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2013-09-30 03:54:27

代码语言:javascript
复制
int pos = 1;
std::list<Xapian::Query> subs;
subs.push_back(Xapian::Query("foo", 1, pos++));
subs.push_back(Xapian::Query("bar", 1, pos++));
querylist.push_back(Xapian::Query(Xapian::Query::OP_PHRASE, subs.begin(), subs.end()));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11966602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档