本文整理汇总了C++中Hits::doc方法的典型用法代码示例。如果您正苦于以下问题:C++ Hits::doc方法的具体用法?C++ Hits::doc怎么用?C++ Hits::doc使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Hits
的用法示例。
在下文中一共展示了Hits::doc方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: StringResponse
/**
Returns a Entry.
\id The key of the entry.
*/
Response * ZefaniaLex::getEntry(const QString &key)
{
try {
if(!hasIndex()) {
if(buildIndex() != 0) {
return new StringResponse(QObject::tr("Cannot build index."));
}
}
const QString index = indexPath();
const QString queryText = "key:" + key;
const TCHAR* stop_words[] = { nullptr };
standard::StandardAnalyzer analyzer(stop_words);
IndexReader* reader = IndexReader::open(index.toStdString().c_str());
IndexSearcher s(reader);
Query* q = QueryParser::parse(SearchTools::toTCHAR(queryText), _T("content"), &analyzer);
Hits* h = s.search(q);
QString ret = "";
for(size_t i = 0; i < h->length(); i++) {
Document* doc = &h->doc(i);
if(!ret.isEmpty())
ret.append("<hr /> ");
ret.append(SearchTools::toQString(doc->get(_T("content"))));
}
return ret.isEmpty() ? new StringResponse(QObject::tr("Nothing found for %1").arg(key)) : new StringResponse(ret);
} catch(...) {
return new StringResponse(QString());
}
}
示例2: SearchFilesC
void SearchFilesC(const char* index, const char* fobizzle){
standard::StandardAnalyzer analyzer;
char line[80];
TCHAR tline[80];
TCHAR* buf;
IndexReader* reader = IndexReader::open(index);
//printf("Enter query string: ");
strncpy(line,fobizzle,80);
//line[strlen(line)-1]=0;
IndexReader* newreader = reader->reopen();
if ( newreader != reader ){
_CLLDELETE(reader);
reader = newreader;
}
IndexSearcher s(reader);
STRCPY_AtoT(tline,line,80);
Query* q = QueryParser::parse(tline,_T("contents"),&analyzer);
buf = q->toString(_T("contents"));
_tprintf(_T("Searching for: %S\n\n"), buf);
_CLDELETE_LCARRAY(buf);
uint64_t str = Misc::currentTimeMillis();
Hits* h = s.search(q);
uint32_t srch = (int32_t)(Misc::currentTimeMillis() - str);
str = Misc::currentTimeMillis();
//SearchData search[h->length()];
for ( size_t i=0; i < h->length(); i++ ){
Document* doc = &h->doc(i);
//const TCHAR* buf = doc.get(_T("contents"));
_tprintf(_T("%d. %S - %f\n"), i, doc->get(_T("path")), h->score(i));
//search[i].set_path(doc->get(_T("path")));
}
printf("\n\nSearch took: %d ms.\n", srch);
printf("Screen dump took: %d ms.\n\n", (int32_t)(Misc::currentTimeMillis() - str));
_CLLDELETE(h);
_CLLDELETE(q);
s.close();
reader->close();
_CLLDELETE(reader);
};
示例3: lock
QMap< int, float >
FuzzyIndex::searchAlbum( const Tomahawk::query_ptr& query )
{
Q_ASSERT( query->isFullTextQuery() );
QMutexLocker lock( &m_mutex );
QMap< int, float > resultsmap;
try
{
if ( !m_luceneReader )
{
if ( !IndexReader::indexExists( TomahawkUtils::appDataDir().absoluteFilePath( "tomahawk.lucene" ).toStdString().c_str() ) )
{
qDebug() << Q_FUNC_INFO << "index didn't exist.";
return resultsmap;
}
m_luceneReader = IndexReader::open( m_luceneDir );
m_luceneSearcher = _CLNEW IndexSearcher( m_luceneReader );
}
QueryParser parser( _T( "album" ), m_analyzer );
QString escapedName = QString::fromWCharArray( parser.escape( DatabaseImpl::sortname( query->fullTextQuery() ).toStdWString().c_str() ) );
Query* qry = _CLNEW FuzzyQuery( _CLNEW Term( _T( "album" ), escapedName.toStdWString().c_str() ) );
Hits* hits = m_luceneSearcher->search( qry );
for ( uint i = 0; i < hits->length(); i++ )
{
Document* d = &hits->doc( i );
float score = hits->score( i );
int id = QString::fromWCharArray( d->get( _T( "albumid" ) ) ).toInt();
if ( score > 0.30 )
{
resultsmap.insert( id, score );
// tDebug() << "Index hit:" << id << score;
}
}
delete hits;
delete qry;
}
catch( CLuceneError& error )
{
tDebug() << "Caught CLucene error:" << error.what();
Q_ASSERT( false );
}
return resultsmap;
}
示例4: EIO_Search
static int EIO_Search(eio_req* req)
{
search_baton_t* baton = static_cast<search_baton_t*>(req->data);
standard::StandardAnalyzer analyzer;
IndexReader* reader = 0;
try {
reader = IndexReader::open(*(*baton->index));
} catch (CLuceneError& E) {
baton->error.assign(E.what());
return 0;
} catch(...) {
baton->error = "Got an unknown exception";
return 0;
}
IndexReader* newreader = reader->reopen();
if ( newreader != reader ) {
delete reader;
reader = newreader;
}
IndexSearcher s(reader);
try {
TCHAR* searchString = STRDUP_AtoT(*(*baton->search));
Query* q = QueryParser::parse(searchString, _T(""), &analyzer);
Hits* hits = s.search(q);
HandleScope scope;
//_CLDELETE(q);
free(searchString);
// Build the result array
Local<v8::Array> resultArray = v8::Array::New();
for (size_t i=0; i < hits->length(); i++) {
Document& doc(hits->doc(i));
// {"id":"ab34", "score":1.0}
Local<Object> resultObject = Object::New();
// TODO: This dup might be a leak
resultObject->Set(String::New("id"), String::New(STRDUP_TtoA(doc.get(_T("_id")))));
resultObject->Set(String::New("score"), Number::New(hits->score(i)));
resultArray->Set(i, resultObject);
}
baton->results = Persistent<v8::Array>::New(resultArray);
} catch (CLuceneError& E) {
baton->error.assign(E.what());
} catch(...) {
baton->error = "Got an unknown exception";
}
return 0;
}
示例5: searcher
vector<pair<string,uint32_t> >
CLuceneIndexReader::histogram(const string& query,
const string& fieldname, const string& labeltype) {
vector<pair<string,uint32_t> > h;
if (!checkReader()) {
return h;
}
Strigi::QueryParser parser;
Strigi::Query q = parser.buildQuery(query);
Query* bq = p->createQuery(q);
IndexSearcher searcher(reader);
Hits* hits = 0;
int s = 0;
try {
hits = searcher.search(bq);
s = hits->length();
} catch (CLuceneError& err) {
fprintf(stderr, "could not query: %s\n", err.what());
}
wstring field = utf8toucs2(fieldname);
int32_t max = INT_MIN;
int32_t min = INT_MAX;
vector<int32_t> values;
values.reserve(s);
char* end;
for (int i = 0; i < s; ++i) {
Document *d = &hits->doc(i);
const TCHAR* v = d->get(field.c_str());
if (v) {
int val = (int)strtol(wchartoutf8( v ).c_str(), &end, 10);
if ( *end != 0) {
_CLDELETE(hits);
return h;
}
values.push_back(val);
max = (max>val) ?max :val;
min = (min<val) ?min :val;
}
}
if (hits) {
_CLDELETE(hits);
}
searcher.close();
_CLDELETE(bq);
if (fieldname == FieldRegister::mtimeFieldName || labeltype == "time") {
return makeTimeHistogram(values);
} else {
return makeHistogram(values, min, max);
}
}
示例6: getEntry
/**
Returns a Entry.
\id The key of the entry.
*/
QString ZefaniaLex::getEntry(const QString &key)
{
try {
if(!hasIndex()) {
if(buildIndex() != 0) {
return QObject::tr("Cannot build index.");
}
}
const QString index = indexPath();
const QString queryText = "key:" + key;
const TCHAR* stop_words[] = { NULL };
standard::StandardAnalyzer analyzer(stop_words);
IndexReader* reader = IndexReader::open(index.toStdString().c_str());
IndexSearcher s(reader);
#ifdef OBV_USE_WSTRING
Query* q = QueryParser::parse(queryText.toStdWString().c_str(), _T("content"), &analyzer);
#else
Query* q = QueryParser::parse(reinterpret_cast<const wchar_t *>(queryText.utf16()), _T("content"), &analyzer);
#endif
Hits* h = s.search(q);
QString ret = "";
for(size_t i = 0; i < h->length(); i++) {
Document* doc = &h->doc(i);
if(!ret.isEmpty())
ret.append("<hr /> ");
#ifdef OBV_USE_WSTRING
ret.append(QString::fromWCharArray(doc->get(_T("content"))));
#else
ret.append(QString::fromUtf16((const ushort*)doc->get(_T("content"))));
#endif
}
return ret.isEmpty() ? QObject::tr("Nothing found for %1").arg(key) : ret;
} catch(...) {
return QString();
}
}
示例7: s
SearchData *SearchFilesC(const char* index, const char* fobizzle){
standard::StandardAnalyzer analyzer;
char line[80];
TCHAR tline[80];
TCHAR* buf;
IndexReader* reader = IndexReader::open(index);
//printf("Enter query string: ");
strncpy(line,fobizzle,80);
//line[strlen(line)-1]=0;
IndexReader* newreader = reader->reopen();
if ( newreader != reader ){
_CLLDELETE(reader);
reader = newreader;
}
IndexSearcher s(reader);
STRCPY_AtoT(tline,line,80);
Query* q = QueryParser::parse(tline,_T("contents"),&analyzer);
buf = q->toString(_T("contents"));
_tprintf(_T("Searching for: %S\n\n"), buf);
_CLDELETE_LCARRAY(buf);
uint64_t str = Misc::currentTimeMillis();
Hits* h = s.search(q);
uint32_t srch = (int32_t)(Misc::currentTimeMillis() - str);
str = Misc::currentTimeMillis();
arrsize = h->length();
SearchData *search = new SearchData[h->length()];
for ( size_t i=0; i < h->length(); i++ ){
Document* doc = &h->doc(i);
//const TCHAR* buf = doc.get(_T("contents"));
_tprintf(_T("%d. %S - %f\n"), i, doc->get(_T("path")), h->score(i));
//const TCHAR* wtfbatman;
//wtfbatman = doc->get(_T("path"));
//search[(int)i].score = h->score(i);
//printf("Adding %S %d\n", search[i].path, i);
char *wtfbbq;
wtfbbq = new char[100];
sprintf(wtfbbq,"%S %f", doc->get(_T("path")), h->score(i));
search[(int)i].path = wtfbbq;
//sprintf(str,"%S", String::New((char*)doc->get(_T("path")),5));
//printf("PIZZA %s\n", wtfbbq);
//sprintf(search[i].path,"%S",(const char*)doc->get(_T("path")));
//printf("segfault");
//strcpy(search[i].path,(const char*)doc->get(_T("path")));
}
printf("\n\nSearch took: %d ms.\n", srch);
printf("Screen dump took: %d ms.\n\n", (int32_t)(Misc::currentTimeMillis() - str));
//_CLLDELETE(h);
//_CLLDELETE(q);
//s.close();
//reader->close();
//_CLLDELETE(reader);
//printf("Testing %S\n\n", search[0].path);
return search;
};
示例8: lock
QMap< int, float >
FuzzyIndex::search( const QString& table, const QString& name, bool fulltext )
{
QMutexLocker lock( &m_mutex );
QMap< int, float > resultsmap;
try
{
if ( !m_luceneReader )
{
if ( !IndexReader::indexExists( TomahawkUtils::appDataDir().absoluteFilePath( "tomahawk.lucene" ).toStdString().c_str() ) )
{
qDebug() << Q_FUNC_INFO << "index didn't exist.";
return resultsmap;
}
m_luceneReader = IndexReader::open( m_luceneDir );
m_luceneSearcher = _CLNEW IndexSearcher( m_luceneReader );
}
if ( name.isEmpty() )
return resultsmap;
Hits* hits = 0;
Query* qry = 0;
QueryParser parser( table.toStdWString().c_str(), m_analyzer );
if ( fulltext )
{
QString escapedName = QString::fromWCharArray( parser.escape( name.toStdWString().c_str() ) );
QStringList sl = DatabaseImpl::sortname( escapedName ).split( " ", QString::SkipEmptyParts );
qry = parser.parse( QString( "%1:%2~" ).arg( table ).arg( sl.join( "~ " ) ).toStdWString().c_str() );
}
else
{
// qry = _CLNEW FuzzyQuery( _CLNEW Term( table.toStdWString().c_str(), DatabaseImpl::sortname( name ).toStdWString().c_str() ) );
QString escapedName = QString::fromWCharArray( parser.escape( name.toStdWString().c_str() ) );
QStringList sl = DatabaseImpl::sortname( escapedName ).split( " ", QString::SkipEmptyParts );
qry = parser.parse( QString( "%1:\"%2\"~" ).arg( table ).arg( sl.join( " " ) ).toStdWString().c_str() );
}
hits = m_luceneSearcher->search( qry );
for ( uint i = 0; i < hits->length(); i++ )
{
Document* d = &hits->doc( i );
float score = hits->score( i );
int id = QString::fromWCharArray( d->get( _T( "id" ) ) ).toInt();
QString result = QString::fromWCharArray( d->get( table.toStdWString().c_str() ) );
if ( DatabaseImpl::sortname( result ) == DatabaseImpl::sortname( name ) )
score = 1.0;
else
score = qMin( score, (float)0.99 );
if ( score > 0.20 )
{
resultsmap.insert( id, score );
// qDebug() << "Hitres:" << result << id << score << table << name;
}
}
delete hits;
delete qry;
}
catch( CLuceneError& error )
{
tDebug() << "Caught CLucene error:" << error.what();
Q_ASSERT( false );
}
return resultsmap;
}