现在的位置: 首页 > 综合 > 正文

关于Xapian初学者的几个问题

2013年03月01日 ⁄ 综合 ⁄ 共 905字 ⁄ 字号 评论关闭

 

问题1:
我看到Xapian::Document有一个方法
void  add_value (Xapian::valueno valueno, const std::string &value)
这个方法的作用是什么呢?Xapian中的文件与terms关键词是相关的,那这个又是什么关系?

解答1:
values是数据额外的信息部分,在一些情况下可以用来对搜索过程进行搜索的更正。例如,他们可以用于对一些文件添加额外的字段,或者对结果用一种不同的方式进行排序,或者对从一个单一网站得到的结果进行分解和筛选。

问题2:
add_posting 方法将会在文件中添加一个关键字
void add_posting (const std::string &tname, Xapian::termpos tpos, Xapian::termcount wdfinc=1)

我注意到 Xapian::TermGenerator有如下的方法
void  index_text (const Xapian::Utf8Iterator &itor, Xapian::termcount weight=1, const std::string &prefix="")
这两个方法和区别和联系在哪?

解答2:
TermGenerator是一个类,该类用于分析提供给它的文本,把文本拆开为单独的单词,同时采用合适的填充操作符。它会产生与QueryParser类提供的相兼容的关键字。

Document::add_posting()和Document::add_term()仅对一个文件添加一个关键字。该关键字被添加到文档中时也就被提供给了函数;没有执行填充,同时关键词也没有为一个单词分解为不同的关键词。这些功能都是通过TermGenerator调用来给文档添加它产生的关键词。

通常情况下,如果你有一段文本检索,TermGenerator应该被使用,同时你也希望产生查询条件使用QueryParse类来搜索文本。如果你需要添加特定的关键字,那就要使用add_term()或者add_posting()。要么是因为你需要实现你自己的关键字产生策略,要么是因为你在数据库中存储了额外的信息,例如实现一些布尔过滤器。

抱歉!评论已关闭.