solr 使用自定义的 QueryParser

https://blog.csdn.net/aaa1117a8w5s6d/article/details/48509521

原文出处:http://blog.chenlb.com/2009/02/use-custom-solr-queryparser.html

如果想让 solr 有更加强大的功能或在查询时做一些特别的处理。可以在 solrconfig.xml 里注册自定义的 QueryParser(查询解析器),这是 solr 1.3 的新功能(插件功能),如:

 
  1. <queryParser name="mylucene" class="org.apache.solr.search.MyQParserPlugin" />  

query parser 插件时,要先了解下 solr 这方面的结构,下面的QueryParserPlugin 相关类的类图:

 

写自己的 query parser 插件,基本需要写加个类,MyQParserPlugin、MyQParser、MySolrQueryParser分别扩展QParserPlugin、QParser、SolrQueryParser。

默认情况:solr 是用 OldLuceneQParser 来解析查询,solr 源码中 OldLuceneQParser与LuceneQParser是LuceneQParserPlugin内部类。

扩展QParser时,可以复制 OldLuceneQParser 与 LuceneQParser,然后稍加改一个(把 SolrQueryParser 改为 MySolrQueryParser,还有一些访问属性相关的调整),然后你可以在MySolrQueryParser “胡作非为”,与可以在 MyQParser 查询前做一些特别的处理。

最后打包,个人用这三个类独立打包成my-qparser.jar 放到 solr.home/lib目录下,如果没有手动建一个。

写好了扩展怎么用呢?solr 有一个 defType的参数,比如:你注册自己的QParserPlugin后,如名为mylucene,那么 defType=mylucene。当然还可以这样:在q参数值前面加{!mylucene}。个人认为用defType比较好,这样其它调用的地方不用改,做到透明——在 standard requestHandler 里加默认的defType参数。

现在可以看下是否自己的查询解析器正常工作:http://localhost:8080/solr/select?indent=on&version=2.2&q=solr&start=0&rows=10&fl=*%2Cscore&debugQuery=on

转载于:https://www.cnblogs.com/davidwang456/articles/10491045.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值