本文整理汇总了C++中Global::normalizeTermForSearchAndIndex方法的典型用法代码示例。如果您正苦于以下问题:C++ Global::normalizeTermForSearchAndIndex方法的具体用法?C++ Global::normalizeTermForSearchAndIndex怎么用?C++ Global::normalizeTermForSearchAndIndex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Global
的用法示例。
在下文中一共展示了Global::normalizeTermForSearchAndIndex方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: addTextIndex
void NoteIndexer::addTextIndex(int lid, QString content) {
// Delete any old content
NSqlQuery sql(db);
sql.prepare("Delete from SearchIndex where lid=:lid and source=:source");
sql.bindValue(":lid", lid);
sql.bindValue(":source", "text");
sql.exec();
// Add the new content. it is basically a text version of the note with a weight of 100.
sql.prepare("Insert into SearchIndex (lid, weight, source, content) values (:lid, :weight, :source, :content)");
sql.bindValue(":lid", lid);
sql.bindValue(":weight", 100);
sql.bindValue(":source", "text");
content = global.normalizeTermForSearchAndIndex(content);
sql.bindValue(":content", content);
sql.exec();
sql.prepare("Delete from DataStore where lid=:lid and key=:key");
sql.bindValue(":lid", lid);
sql.bindValue(":key", NOTE_INDEX_NEEDED);
sql.exec();
}
示例2: indexRecognition
//.........这里部分代码省略.........
QString outDir = global.fileManager.getTmpDirPath();
QProcess sofficeProcess;
QString cmd = "soffice --headless --convert-to txt:\"Text\" --outdir "
+outDir + " "
+file;
sofficeProcess.start(cmd,
QIODevice::ReadWrite|QIODevice::Unbuffered);
QLOG_DEBUG() << "Starting soffice ";
sofficeProcess.waitForStarted();
QLOG_DEBUG() << "Waiting for completion";
sofficeProcess.waitForFinished();
int rc = sofficeProcess.exitCode();
QLOG_DEBUG() << "soffice Errors:" << sofficeProcess.readAllStandardError();
QLOG_DEBUG() << "soffice Output:" << sofficeProcess.readAllStandardOutput();
QLOG_DEBUG() << "return code:" << rc;
if (rc == 255) {
QLOG_ERROR() << "soffice not found. Disabling attachment indexing.";
this->officeFound = false;
return;
}
QFile txtFile(outDir+QString::number(reslid) +".txt");
if (txtFile.open(QIODevice::ReadOnly)) {
QString text;
text = txtFile.readAll();
NSqlQuery sql(db);
db->lockForWrite();
sql.prepare("Insert into SearchIndex (lid, weight, source, content) values (:lid, :weight, 'recognition', :content)");
sql.bindValue(":lid", lid);
sql.bindValue(":weight", 100);
text = global.normalizeTermForSearchAndIndex(text);
sql.bindValue(":content", text);
QLOG_DEBUG() << "Adding note resource to index DB";
sql.exec();
db->unlock();
txtFile.close();
}
QDir dir;
dir.remove(outDir+QString::number(reslid) +".txt");
}
void IndexRunner::flushCache() {
if (indexHash->size() <= 0)
return;
QDateTime start = QDateTime::currentDateTimeUtc();
NSqlQuery sql(db);
db->lockForWrite();
sql.exec("begin");
QHash<qint32, IndexRecord*>::iterator i;
// Start adding words to the index. Every 200 sql insertions we do a commit
int commitCount = 200;
for (i=indexHash->begin(); keepRunning && !pauseIndexing && i!=indexHash->end(); ++i) {
qint32 lid = i.key();
IndexRecord *rec = i.value();
qint32 weight = rec->weight;
QString source = rec->source;
QString content = rec->content;
delete rec;
示例3: indexRecognition
// Index any resources
void NoteIndexer::indexRecognition(qint32 reslid, Resource &r) {
QLOG_TRACE_IN();
if (!r.noteGuid.isSet() || !r.guid.isSet())
return;
if (reslid <= 0)
return;
NSqlQuery sql(db);
// Make sure we have something to look through.
Data recognition;
if (r.recognition.isSet())
recognition = r.recognition;
if (!recognition.body.isSet())
return;
QDomDocument doc;
QString emsg;
doc.setContent(recognition.body, &emsg);
// look for text tags
QDomNodeList anchors = doc.documentElement().elementsByTagName("t");
QLOG_TRACE() << "Beginning insertion of recognition:";
QLOG_TRACE() << "Anchors found: " << anchors.length();
sql.exec("begin;");
#if QT_VERSION < 0x050000
for (unsigned int i=0; i<anchors.length(); i++) {
#else
for (int i=0; i<anchors.length(); i++) {
#endif
QLOG_TRACE() << "Anchor: " << i;
QApplication::processEvents();
QDomElement enmedia = anchors.at(i).toElement();
QString weight = enmedia.attribute("w");
QString text = enmedia.text();
if (text != "") {
// Add the new content. it is basically a text version of the note with a weight of 100.
sql.prepare("Insert into SearchIndex (lid, weight, source, content) values (:lid, :weight, :source, :content)");
sql.bindValue(":lid", reslid);
sql.bindValue(":weight", weight);
sql.bindValue(":source", "recognition");
text = global.normalizeTermForSearchAndIndex(text);
sql.bindValue(":content", text);
sql.exec();
}
}
QLOG_TRACE() << "Committing";
sql.exec("commit");
QLOG_TRACE_OUT();
}
// Index any PDFs that are attached. Basically it turns the PDF into text and adds it the same
// way as a note's body
void NoteIndexer::indexPdf(qint32 reslid) {
QLOG_TRACE_IN();
if (!global.indexPDFLocally)
return;
NSqlQuery sql(db);
if (reslid <= 0)
return;
QString file = global.fileManager.getDbaDirPath() + QString::number(reslid) +".pdf";
QString text = "";
Poppler::Document *doc = Poppler::Document::load(file);
if (doc == nullptr || doc->isEncrypted() || doc->isLocked())
return;
for (int i=0; i<doc->numPages(); i++) {
QRectF rect;
text = text + doc->page(i)->text(rect) + QString(" ");
}
QLOG_TRACE() << "Adding PDF";
// Add the new content. it is basically a text version of the note with a weight of 100.
sql.prepare("Insert into SearchIndex (lid, weight, source, content) values (:lid, :weight, :source, :content)");
sql.bindValue(":lid", reslid);
sql.bindValue(":weight", 100);
sql.bindValue(":source", "recognition");
text = global.normalizeTermForSearchAndIndex(text);
sql.bindValue(":content", text);
sql.exec();
QLOG_TRACE_OUT();
}