searchengine/cpix/cpix/src/queryparser.cpp
changeset 24 65456528cac2
parent 8 6547bf8ca13a
equal deleted inserted replaced
23:d4d56f5e7c55 24:65456528cac2
    28 
    28 
    29 namespace Cpix {
    29 namespace Cpix {
    30 	
    30 	
    31 	IQueryParser::~IQueryParser() {}
    31 	IQueryParser::~IQueryParser() {}
    32 	
    32 	
    33 	CLuceneQueryParser::CLuceneQueryParser(const wchar_t* defaultField, 
    33 	LuceneQueryParser::LuceneQueryParser(const wchar_t* defaultField, 
    34 										  lucene::analysis::Analyzer& analyzer) 
    34 										  lucene::analysis::Analyzer& analyzer) 
    35 	: parser_() {
    35 	: parser_() {
    36 		parser_.reset(_CLNEW lucene::queryParser::QueryParser(defaultField, &analyzer));
    36 		parser_.reset(_CLNEW lucene::queryParser::QueryParser(defaultField, &analyzer));
    37 	}
    37 	}
    38 	
    38 	
    39 	CLuceneQueryParser::~CLuceneQueryParser() {}
    39 	LuceneQueryParser::~LuceneQueryParser() {}
    40 	
    40 	
    41 	std::auto_ptr<lucene::search::Query> CLuceneQueryParser::parse(const wchar_t* query) {
    41 	std::auto_ptr<lucene::search::Query> LuceneQueryParser::parse(const wchar_t* query) {
    42 		return std::auto_ptr<lucene::search::Query>( parser_->parse(query) ); 
    42 		return std::auto_ptr<lucene::search::Query>( parser_->parse(query) ); 
    43 	}
    43 	}
    44 
    44 
    45 	const wchar_t* CLuceneQueryParser::getField() const {
    45 	const wchar_t* LuceneQueryParser::getField() const {
    46 		return parser_->getField();
    46 		return parser_->getField();
    47 	}
    47 	}
    48 	
    48 	
    49 	void CLuceneQueryParser::setDefaultOperator(cpix_QP_Operator op) {
    49 	void LuceneQueryParser::setDefaultOperator(cpix_QP_Operator op) {
    50  		parser_->setDefaultOperator(static_cast<int>(op)); 
    50  		parser_->setDefaultOperator(static_cast<int>(op)); 
    51 	}
    51 	}
    52 
    52 
    53 	PrefixOptQueryParser::PrefixOptQueryParser(std::auto_ptr<IQueryParser> parser) 
    53 	PrefixOptQueryParser::PrefixOptQueryParser(std::auto_ptr<IQueryParser> parser) 
    54 	:	 
    54 	:	 
    70 	
    70 	
    71 	void PrefixOptQueryParser::setDefaultOperator(cpix_QP_Operator op) {
    71 	void PrefixOptQueryParser::setDefaultOperator(cpix_QP_Operator op) {
    72 		parser_->setDefaultOperator(op); 
    72 		parser_->setDefaultOperator(op); 
    73 	}
    73 	}
    74 
    74 
    75 	CLuceneMultiFieldQueryParser::CLuceneMultiFieldQueryParser(
    75 	LuceneMultiFieldQueryParser::LuceneMultiFieldQueryParser(
    76 			const wchar_t** fields, 
    76 			const wchar_t** fields, 
    77 			lucene::analysis::Analyzer& analyzer, 
    77 			lucene::analysis::Analyzer& analyzer, 
    78 			lucene::queryParser::BoostMap& boostMap)
    78 			lucene::queryParser::BoostMap& boostMap)
    79 	: parser_() {
    79 	: parser_() {
    80 		parser_.reset(
    80 		parser_.reset(
    81 				_CLNEW lucene::queryParser::MultiFieldQueryParser( fields, &analyzer, &boostMap ));
    81 				_CLNEW lucene::queryParser::MultiFieldQueryParser( fields, &analyzer, &boostMap ));
    82 		
    82 		
    83 	}
    83 	}
    84 	
    84 	
    85 	CLuceneMultiFieldQueryParser::~CLuceneMultiFieldQueryParser() {}
    85 	LuceneMultiFieldQueryParser::~LuceneMultiFieldQueryParser() {}
    86 	
    86 	
    87 	std::auto_ptr<lucene::search::Query> 
    87 	std::auto_ptr<lucene::search::Query> 
    88 		CLuceneMultiFieldQueryParser::parse(const wchar_t* query) {
    88 		LuceneMultiFieldQueryParser::parse(const wchar_t* query) {
    89 		return std::auto_ptr<lucene::search::Query>( parser_->parse( query ) );
    89 		return std::auto_ptr<lucene::search::Query>( parser_->parse( query ) );
    90 		
    90 		
    91 	}
    91 	}
    92 	
    92 	
    93 	const wchar_t* CLuceneMultiFieldQueryParser::getField() const {
    93 	const wchar_t* LuceneMultiFieldQueryParser::getField() const {
    94 		THROW_CPIXEXC("Multi field query parser does not support getField operation"); 	
    94 		THROW_CPIXEXC("Multi field query parser does not support getField operation"); 	
    95 	}
    95 	}
    96 	
    96 	
    97 	void CLuceneMultiFieldQueryParser::setDefaultOperator(cpix_QP_Operator op) {
    97 	void LuceneMultiFieldQueryParser::setDefaultOperator(cpix_QP_Operator op) {
    98 		parser_->setDefaultOperator(static_cast<int>(op)); 
    98 		parser_->setDefaultOperator(static_cast<int>(op)); 
    99 	}
    99 	}
   100 	
   100 	
   101 	IQueryParser* CreateCLuceneQueryParser(const wchar_t* defaultField, 
   101 	IQueryParser* CreateCLuceneQueryParser(const wchar_t* defaultField, 
   102 										   lucene::analysis::Analyzer* analyzer) {
   102 										   lucene::analysis::Analyzer* analyzer) {
   103 		return 
   103 		return 
   104 			new PrefixOptQueryParser(
   104 			new PrefixOptQueryParser(
   105 				std::auto_ptr<IQueryParser>(
   105 				std::auto_ptr<IQueryParser>(
   106 					new CLuceneQueryParser(defaultField, *analyzer)));
   106 					new LuceneQueryParser(defaultField, *analyzer)));
   107 	}
   107 	}
   108 	
   108 	
   109 	IQueryParser* CreateCLuceneMultiFieldQueryParser(
   109 	IQueryParser* CreateCLuceneMultiFieldQueryParser(
   110 											const wchar_t* fields[], 
   110 											const wchar_t* fields[], 
   111 											lucene::analysis::Analyzer* analyzer, 
   111 											lucene::analysis::Analyzer* analyzer, 
   112 											lucene::queryParser::BoostMap* boostMap) {
   112 											lucene::queryParser::BoostMap* boostMap) {
   113 		return 
   113 		return 
   114 			new PrefixOptQueryParser(
   114 			new PrefixOptQueryParser(
   115 				std::auto_ptr<IQueryParser>(
   115 				std::auto_ptr<IQueryParser>(
   116 					new CLuceneMultiFieldQueryParser(fields, 
   116 					new LuceneMultiFieldQueryParser(fields, 
   117 													 *analyzer,
   117 													 *analyzer,
   118 													 *boostMap)));
   118 													 *boostMap)));
   119 		
   119 		
   120 	}
   120 	}
   121 	
   121