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 的新功能(插件功能),如:
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
總結
以上是生活随笔為你收集整理的solr 使用自定义的 QueryParser的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Solr -- query和filter
- 下一篇: 搜索引擎solr系列---多字段匹配的实