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,35 +28,30 @@ 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; Xapian::Query xquery;
// Open query descriptor.
Xapian::Enquire *xenquire; // Open query descriptor. Xapian::Enquire *xenquire;
Xapian::MSet xmset; // Partial result set // Partial result set
Xapian::MSet xmset;
// 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() {
}
~Native()
{
clear(); clear();
} }
void clear() void clear() {
{
delete xenquire; xenquire = 0; delete xenquire; xenquire = 0;
termfreqs.clear(); 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();