我想将Lucene的CommonTermsQuery
类用于使用SolrJ执行的查询,那么如何使用Lucene的Query
类呢?这些类与Solr的查询解析器有什么不同?
发布于 2016-08-11 04:45:28
Solr目前不包括使用CommonTermsQuery的查询解析器,但是可以通过在solrconfig.xml
中的<lib ..
指令中编译.jar
自己一个人,然后再加那个罐子来将查询解析器编译到Solr。
有一个带有关于如何为Solr制作QParserPlugin的现有示例的CommonTermsQuery作为gist,所以这可能是一个自定义插件的好起点。您将在查询开始时通过标准QueryParser选择自定义{!syntax}
。因为SolrJ只是与Solr服务器对话的客户机,所以插件本身必须实现并加载到服务器上(或者如果您是以SolrCloud /群集模式运行,则为在所有服务器上)。
query采用自由形式的文本( Solr擅长的内容),并将其转换为一组查询类供Lucene执行(它代表查询,其方式是查询解析器认为用户希望表达自己的方式)。
Solr查询解析器与Lucene查询解析器的区别有几个,但是现在大多数人都使用edismax
或dismax
查询解析器(随着时间的推移,这些查询解析器可能演变成Lucene,我也不知道):
Solr查询解析器中的差异包括(这些差异来自于Solr Wiki上的旧页面--我不确定是否有更新的版本可用,但是由于Solr和Lucene的代码合并到一棵树中并进行了同步,我想与单独的项目相比,引入的新差异更少):
https://stackoverflow.com/questions/38881706
复制