This commit is contained in:
Jean-Francois Dockes 2017-12-28 14:38:01 +01:00
parent 3f8f31732d
commit 2210d49d3d

View File

@ -14,15 +14,12 @@
* Free Software Foundation, Inc., * Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/ */
#ifndef _rclquery_p_h_included_ #ifndef _rclquery_p_h_included_
#define _rclquery_p_h_included_ #define _rclquery_p_h_included_
#include <map> #include <map>
#include <vector> #include <vector>
#include <string>
using std::map;
using std::vector;
#include <xapian.h> #include <xapian.h>
#include "rclquery.h" #include "rclquery.h"
@ -31,41 +28,36 @@ namespace Rcl {
class Query::Native { class Query::Native {
public: public:
/** The query I belong to */ // The query I belong to
Query *m_q; Query *m_q;
// query descriptor: terms and subqueries joined by operators
/** query descriptor: terms and subqueries joined by operators // (or/and etc...)
* (or/and etc...) Xapian::Query xquery;
*/ // Open query descriptor.
Xapian::Query xquery; Xapian::Enquire *xenquire;
// Partial result set
Xapian::Enquire *xenquire; // Open query descriptor. Xapian::MSet xmset;
Xapian::MSet xmset; // Partial result set
// Term frequencies for current query. See makeAbstract, setQuery // Term frequencies for current query. See makeAbstract, setQuery
map<string, double> termfreqs; std::map<std::string, double> termfreqs;
Native(Query *q) Native(Query *q)
: m_q(q), xenquire(0) : m_q(q), xenquire(0) { }
{ ~Native() {
clear();
} }
~Native() void clear() {
{ delete xenquire; xenquire = 0;
clear(); termfreqs.clear();
}
void clear()
{
delete xenquire; xenquire = 0;
termfreqs.clear();
} }
/** Return a list of terms which matched for a specific result document */ /** Return a list of terms which matched for a specific result document */
bool getMatchTerms(unsigned long xdocid, std::vector<std::string>& terms); bool getMatchTerms(unsigned long xdocid, std::vector<std::string>& terms);
int makeAbstract(Xapian::docid id, vector<Snippet>&, int makeAbstract(Xapian::docid id, std::vector<Snippet>&,
int maxoccs = -1, int ctxwords = -1); int maxoccs = -1, int ctxwords = -1);
int getFirstMatchPage(Xapian::docid docid, std::string& term); int getFirstMatchPage(Xapian::docid docid, std::string& term);
void setDbWideQTermsFreqs(); void setDbWideQTermsFreqs();
double qualityTerms(Xapian::docid docid, double qualityTerms(Xapian::docid docid,
const std::vector<std::string>& terms, const std::vector<std::string>& terms,
std::multimap<double, std::vector<std::string> >& byQ); std::multimap<double, std::vector<std::string> >& byQ);
}; };
} }