searchengine/cpix/cpix/inc/private/queryparser.h
author hgs
Fri, 15 Oct 2010 12:09:28 +0530
changeset 24 65456528cac2
parent 8 6547bf8ca13a
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description: 
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef QUERYPARSER_H_
hgs
parents:
diff changeset
    20
#define QUERYPARSER_H_
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
#include <memory>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
#include "CLucene.h"
hgs
parents:
diff changeset
    25
#include "CLucene/queryParser/MultiFieldQueryParser.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
#include "prefixopt.h"
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
#include "cpixsearch.h"
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
namespace Cpix {
hgs
parents:
diff changeset
    32
hgs
parents:
diff changeset
    33
	class IQueryParser {
hgs
parents:
diff changeset
    34
		
hgs
parents:
diff changeset
    35
		public:
hgs
parents:
diff changeset
    36
		
hgs
parents:
diff changeset
    37
			virtual ~IQueryParser();
hgs
parents:
diff changeset
    38
		
hgs
parents:
diff changeset
    39
			virtual std::auto_ptr<lucene::search::Query> parse(const wchar_t* query) = 0;
hgs
parents:
diff changeset
    40
			
hgs
parents:
diff changeset
    41
			// Not really a fundamental property of a query parser:
hgs
parents:
diff changeset
    42
			virtual const wchar_t* getField() const = 0;
hgs
parents:
diff changeset
    43
			
hgs
parents:
diff changeset
    44
			virtual void setDefaultOperator(cpix_QP_Operator op) = 0;
hgs
parents:
diff changeset
    45
	};
hgs
parents:
diff changeset
    46
24
hgs
parents: 8
diff changeset
    47
	class LuceneQueryParser : public IQueryParser {
8
hgs
parents:
diff changeset
    48
		
hgs
parents:
diff changeset
    49
		public: 
hgs
parents:
diff changeset
    50
		
24
hgs
parents: 8
diff changeset
    51
			~LuceneQueryParser();
8
hgs
parents:
diff changeset
    52
	
24
hgs
parents: 8
diff changeset
    53
			LuceneQueryParser(const wchar_t* field, lucene::analysis::Analyzer& analyzer);
8
hgs
parents:
diff changeset
    54
			
hgs
parents:
diff changeset
    55
			virtual std::auto_ptr<lucene::search::Query> parse(const wchar_t* query);
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
			virtual const wchar_t* getField() const;
hgs
parents:
diff changeset
    58
			
hgs
parents:
diff changeset
    59
			virtual void setDefaultOperator(cpix_QP_Operator op);
hgs
parents:
diff changeset
    60
hgs
parents:
diff changeset
    61
		private: 
hgs
parents:
diff changeset
    62
			
hgs
parents:
diff changeset
    63
			std::auto_ptr<lucene::queryParser::QueryParser> parser_;  
hgs
parents:
diff changeset
    64
		
hgs
parents:
diff changeset
    65
	};
hgs
parents:
diff changeset
    66
	
24
hgs
parents: 8
diff changeset
    67
	class LuceneMultiFieldQueryParser : public IQueryParser {
8
hgs
parents:
diff changeset
    68
		
hgs
parents:
diff changeset
    69
		public: 
hgs
parents:
diff changeset
    70
		
24
hgs
parents: 8
diff changeset
    71
			~LuceneMultiFieldQueryParser();
8
hgs
parents:
diff changeset
    72
	
24
hgs
parents: 8
diff changeset
    73
			LuceneMultiFieldQueryParser(const wchar_t** fields, 
8
hgs
parents:
diff changeset
    74
										 lucene::analysis::Analyzer& analyzer, 
hgs
parents:
diff changeset
    75
										 lucene::queryParser::BoostMap& boostMap);
hgs
parents:
diff changeset
    76
			
hgs
parents:
diff changeset
    77
			virtual std::auto_ptr<lucene::search::Query> parse(const wchar_t* query);
hgs
parents:
diff changeset
    78
			
hgs
parents:
diff changeset
    79
			virtual const wchar_t* getField() const;
hgs
parents:
diff changeset
    80
			
hgs
parents:
diff changeset
    81
			virtual void setDefaultOperator(cpix_QP_Operator op);
hgs
parents:
diff changeset
    82
			
hgs
parents:
diff changeset
    83
		private: 
hgs
parents:
diff changeset
    84
			
hgs
parents:
diff changeset
    85
			std::auto_ptr<lucene::queryParser::QueryParser> parser_;  
hgs
parents:
diff changeset
    86
		
hgs
parents:
diff changeset
    87
	};
hgs
parents:
diff changeset
    88
	
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
	class PrefixOptQueryParser : public IQueryParser {
hgs
parents:
diff changeset
    91
		
hgs
parents:
diff changeset
    92
		public:
hgs
parents:
diff changeset
    93
		
hgs
parents:
diff changeset
    94
			PrefixOptQueryParser(std::auto_ptr<IQueryParser> parser);
hgs
parents:
diff changeset
    95
			
hgs
parents:
diff changeset
    96
			~PrefixOptQueryParser(); 
hgs
parents:
diff changeset
    97
			
hgs
parents:
diff changeset
    98
			virtual std::auto_ptr<lucene::search::Query> parse(const wchar_t* query);
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
			virtual const wchar_t* getField() const;
hgs
parents:
diff changeset
   101
			
hgs
parents:
diff changeset
   102
			virtual void setDefaultOperator(cpix_QP_Operator op);
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
		private:
hgs
parents:
diff changeset
   105
			
hgs
parents:
diff changeset
   106
			PrefixOptQueryRewriter prefixOpt_; 
hgs
parents:
diff changeset
   107
			
hgs
parents:
diff changeset
   108
			std::auto_ptr<IQueryParser> parser_;
hgs
parents:
diff changeset
   109
		
hgs
parents:
diff changeset
   110
	};
hgs
parents:
diff changeset
   111
	
hgs
parents:
diff changeset
   112
	// 
hgs
parents:
diff changeset
   113
	// Following factory methods apply necessary optimization wraps
hgs
parents:
diff changeset
   114
	// over the query parsers.
hgs
parents:
diff changeset
   115
	// 
hgs
parents:
diff changeset
   116
	
hgs
parents:
diff changeset
   117
	
hgs
parents:
diff changeset
   118
	IQueryParser* CreateCLuceneQueryParser(const wchar_t* defaultField, 
hgs
parents:
diff changeset
   119
									       lucene::analysis::Analyzer* analyzer);
hgs
parents:
diff changeset
   120
	
hgs
parents:
diff changeset
   121
	IQueryParser* CreateCLuceneMultiFieldQueryParser(
hgs
parents:
diff changeset
   122
											const wchar_t* fields[], 
hgs
parents:
diff changeset
   123
											lucene::analysis::Analyzer* analyzer, 
hgs
parents:
diff changeset
   124
											lucene::queryParser::BoostMap* boostMap);
hgs
parents:
diff changeset
   125
	
hgs
parents:
diff changeset
   126
	IQueryParser* CreatePrefixQueryParser(const wchar_t* field); 
hgs
parents:
diff changeset
   127
hgs
parents:
diff changeset
   128
}
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
#endif /* QUERYPARSER_H_ */