自己动手写分布式搜索引擎
上QQ阅读APP看书,第一时间看更新

3.6.3 简单的查询解析器

QueryParser使用Analyzer对“title:car”中的查询词car再次处理成为Query对象。

如果要修改QueryParser的行为,可以继承QueryParser类,重写其中的getFieldQuery方法。例如,同时查询多个列的MultiFieldQueryParser。

要改变查询分析器的某一部分,例如查询实例化,可以通过继承解析器类来实现,改变实际的查询语法需要深入地了解JavaCC解析器生成器。

使用MultiFieldQueryParser查询多个列:

        MultiFieldQueryParser mq
                = new MultiFieldQueryParser(new String[]{"title", "body"},
                            analyzer);

在QueryParser传入一个字符串的地方MultiFieldQueryParser传入一个字符串数组。