solr 使用自定义的 QueryParser
https://blog.csdn.net/aaa1117a8w5s6d/article/details/48509521
原文出處:http://blog.chenlb.com/2009/02/use-custom-solr-queryparser.html
如果想讓 solr 有更加強(qiáng)大的功能或在查詢時(shí)做一些特別的處理。可以在 solrconfig.xml 里注冊(cè)自定義的 QueryParser(查詢解析器),這是 solr 1.3 的新功能(插件功能),如:
query parser 插件時(shí),要先了解下 solr 這方面的結(jié)構(gòu),下面的QueryParserPlugin 相關(guān)類的類圖:
?
寫自己的 query parser 插件,基本需要寫加個(gè)類,MyQParserPlugin、MyQParser、MySolrQueryParser分別擴(kuò)展QParserPlugin、QParser、SolrQueryParser。
默認(rèn)情況:solr 是用 OldLuceneQParser 來(lái)解析查詢,solr 源碼中 OldLuceneQParser與LuceneQParser是LuceneQParserPlugin內(nèi)部類。
擴(kuò)展QParser時(shí),可以復(fù)制 OldLuceneQParser 與 LuceneQParser,然后稍加改一個(gè)(把 SolrQueryParser 改為 MySolrQueryParser,還有一些訪問(wèn)屬性相關(guān)的調(diào)整),然后你可以在MySolrQueryParser “胡作非為”,與可以在 MyQParser 查詢前做一些特別的處理。
最后打包,個(gè)人用這三個(gè)類獨(dú)立打包成my-qparser.jar 放到 solr.home/lib目錄下,如果沒有手動(dòng)建一個(gè)。
寫好了擴(kuò)展怎么用呢?solr 有一個(gè) defType的參數(shù),比如:你注冊(cè)自己的QParserPlugin后,如名為mylucene,那么 defType=mylucene。當(dāng)然還可以這樣:在q參數(shù)值前面加{!mylucene}。個(gè)人認(rèn)為用defType比較好,這樣其它調(diào)用的地方不用改,做到透明——在 standard requestHandler?里加默認(rèn)的defType參數(shù)。
現(xiàn)在可以看下是否自己的查詢解析器正常工作:http://localhost:8080/solr/select?indent=on&version=2.2&q=solr&start=0&rows=10&fl=*%2Cscore&debugQuery=on
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/articles/10491045.html
總結(jié)
以上是生活随笔為你收集整理的solr 使用自定义的 QueryParser的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Solr -- query和filter
- 下一篇: 搜索引擎solr系列---多字段匹配的实