Compiler* PhraseQuery_Make_Compiler_IMP(PhraseQuery *self, Searcher *searcher, float boost, bool subordinate) { PhraseQueryIVARS *const ivars = PhraseQuery_IVARS(self); if (Vec_Get_Size(ivars->terms) == 1) { // Optimize for one-term "phrases". Obj *term = Vec_Fetch(ivars->terms, 0); TermQuery *term_query = TermQuery_new(ivars->field, term); TermCompiler *term_compiler; TermQuery_Set_Boost(term_query, ivars->boost); term_compiler = (TermCompiler*)TermQuery_Make_Compiler(term_query, searcher, boost, subordinate); DECREF(term_query); return (Compiler*)term_compiler; } else { PhraseCompiler *compiler = PhraseCompiler_new(self, searcher, boost); if (!subordinate) { PhraseCompiler_Normalize(compiler); } return (Compiler*)compiler; } }
Compiler* PhraseQuery_make_compiler(PhraseQuery *self, Searcher *searcher, float boost) { if (VA_Get_Size(self->terms) == 1) { // Optimize for one-term "phrases". Obj *term = VA_Fetch(self->terms, 0); TermQuery *term_query = TermQuery_new(self->field, term); TermCompiler *term_compiler; TermQuery_Set_Boost(term_query, self->boost); term_compiler = (TermCompiler*)TermQuery_Make_Compiler(term_query, searcher, boost); DECREF(term_query); return (Compiler*)term_compiler; } else { return (Compiler*)PhraseCompiler_new(self, searcher, boost); } }