本文整理汇总了C++中Query::getBoost方法的典型用法代码示例。如果您正苦于以下问题:C++ Query::getBoost方法的具体用法?C++ Query::getBoost怎么用?C++ Query::getBoost使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Query
的用法示例。
在下文中一共展示了Query::getBoost方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: rewrite
Query* BooleanQuery::rewrite(Searcher *inSearcher)
{
size_t size = clauses.size();
// Optimize 1-clause queries
if (size == 1) {
BooleanClause* c = clauses[0];
// Just return clause
if (!c->prohibited) {
// Rewrite first
Query* query = c->query->rewrite(inSearcher);
// If the query doesn't actually get re-written, then return a clone
// (because the BooleanQuery will register different to the returned query)
if (query == c->query)
query = query->clone();
// Incorporate boost
if (getBoost() != 1.0f) {
query->setBoost(getBoost() * query->getBoost());
}
return query;
}
}
// Recursively rewrite
BooleanQuery* clone = NULL;
for (uint32_t i = 0 ; i < size; i++) {
BooleanClause* c = clauses[i];
Query* query = c->query->rewrite(inSearcher);
if (query != c->query) {
// Clause rewrote: must clone
if (clone == NULL)
clone = static_cast<BooleanQuery *>(this->clone());
// todo: check if delete query should be on...
// in fact we should try and get rid of these for compatibility sake
clone->clauses.set(i, _CLNEW BooleanClause(query, true, c->required, c->prohibited));
}
}
if (clone != NULL) {
return clone; // Some clauses rewrote
}
else
return this; // No clauses rewrote
}