solr进阶: 如何定制搜索服务,扩展搜索逻辑
前两天发了篇"剖析solr实用性",主要黑了solr建索引让我觉得不舒服,还黑了solr只是个通用的丢入了servlet容器里的简单服务,事实证明我错了。这篇博客我要纠正并回答那篇博客里自己总结的问题:如何定制solr实现自己的搜索服务。
solr是一个可扩展的服务,我们可以添加自己的包和类,在solr已经实现的default处理逻辑之上,再添加我们自己的搜索逻辑。实现手段就是继承solr的基础类,重写或者改写新的Filter,Search Component以及Request Handler类,来取代solr默认的处理类或者与之并存。我也是读了源码,参考了默认类的实现过程,才找到了定制的方法,下面一一说明。
solrconfig.xml里,对/select设置的默认处理类是solr.SearchHandler
<fieldtype name="exampleType" stored="true" indexed="true" class="solr.TextField" > <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory" /> <filter class="pl.solr.ExampleFilterFactory" /> </analyzer></fieldtype>
之后如果对solr有更深的理解或者解读,会再做分享。
(全文完)