君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

2012年7月28日 #

摘要: 转载http://13shu.iteye.com/blog/7438251、请求被solr的过滤器拦截转发到RequestHandlerBase中的handleRequest()2、handleRequest()中调用handleRequestBody()(抽象的)根据请求参数qt=standard查找solrconfig.xml配置文件(SolrConfig初始化)中找到SearchHandler类Xml代码<requestHandlername="standard"class="solr.SearchHandler"default=" 阅读全文
posted @ 2012-07-28 21:01 刺猬的温驯 阅读(1529) 评论(0) 推荐(0) 编辑

摘要: 1、在solrconfig.xml中增加Xml代码<queryParsername="imdismax"class="com.szhtp.search.parse.IMDisMaxQParserPlugin"/><requestHandlername="imdismax"class="solr.SearchHandler"><lstname="defaults"><strname="defType">imdismax</s 阅读全文
posted @ 2012-07-28 20:58 刺猬的温驯 阅读(536) 评论(0) 推荐(0) 编辑

摘要: 转载http://www.colorfuldays.org/program/solr/solr%E6%89%A9%E5%B1%95dismaxqparser/最近产品的同事反应给我一个搜索的问题,用户在输入如“QueryParser定制”时搜索不到结果,而搜索“QueryParser 定制”,就能找到正确的结果。这个问题导致搜索无结果率偏高。前天开始致力于解决该问题,经过两天的研究,最终通过定制QueryParser解决该问题。这个问题的解决方案是定制了Solr的QueryParser,下面讲一下如何定制Solr的QueryParser。我们的搜索引擎使用的是edismax类型,因为一些业务需 阅读全文
posted @ 2012-07-28 20:54 刺猬的温驯 阅读(1413) 评论(0) 推荐(0) 编辑

摘要: 转载http://www.colorfuldays.org/program/solr/solr_edismax_boost/使用Solr搭建搜索引擎很容易,但是如何制定合理的打分规则(boost)做排序却是一个很头痛的事情。Solr本身的排序打分规则是继承自Lucene的文本相关度的打分即boost,这一套算法对于通用的提供全文检索的服务来讲,已经够用了,但是对于一些专门领域的搜索来讲,文本相关度的打分是不合适的。如何来定制适合自身业务的排序打分规则(boost)呢?经过这段时间的思考与实践,想到了如下三个方法1、定制Lucene的boost算法,加入自己希望的业务规则;2、使用Solr的ed 阅读全文
posted @ 2012-07-28 20:52 刺猬的温驯 阅读(3676) 评论(0) 推荐(0) 编辑

摘要: 默认情况下,Solr查询语法只有两种形式:关键词或者以空格分隔的关键词组。当查询英文时,英文本身就是以空格来区分词的,所以Solr就能直接获取英文词并组装Query;但是中文句子中间没有空格,Solr查询时把整个句子交给Query,然后由Query再按照Field来分词、查询。这样就丧失了DisMax中qf所能带来的好处。如果能够在用户输入之后,传入DisMax和QueryComponent之前,把中文句子分割为:关键词+空格+关键词,就能享受Solr中的所有好处。分析DisMaxQParserPlugin和DisMaxQParser的实现,在DisMaxQParser中能够获得默认查询字段和 阅读全文
posted @ 2012-07-28 20:21 刺猬的温驯 阅读(1402) 评论(0) 推荐(0) 编辑

摘要: 在很多情况下,我们并不想自己主动触发COMMIT相应的XML给SOLR,这样带来很多的不便,恰好,SOLR通过配置文件可以自行在满足指定的条件下自动的COMMIT索引,同时,让前端检索实例可以检索到最新生成的数据,而不需要人为干预。 方法很简单:找到solrConfig.xml文件找到以下行,并增加以下配置view plaincopy to clipboardprint?<updateHandlerclass="solr.DirectUpdateHandler2"><autoCommit><maxDocs>10000</maxDoc 阅读全文
posted @ 2012-07-28 20:12 刺猬的温驯 阅读(352) 评论(0) 推荐(0) 编辑

摘要: 转载自:http://www.cnblogs.com/ezhangliang/archive/2012/04/11/2441945.htmlScheduler主要解决两个问题:1.定时增量更新索引。2.定时重做索引。经过测试,Scheduler已经可以实现完全基于配置,无需开发功能,无需人工干预的情况下实现以上两个功能(结合 Solr 的Data Import Request Handler前提下)。为了方便以后使用,我将代码放到http://code.google.com上,地址是:http://code.google.com/p/solr-dataimport-scheduler/这里贴出 阅读全文
posted @ 2012-07-28 19:54 刺猬的温驯 阅读(1064) 评论(0) 推荐(0) 编辑

摘要: 转载自http://martin3000.iteye.com/blog/1328833使用DataImportHandler进行简单数据导入还是比较有效的,特别是DIH中针对简单的数据库表,可以把完全导入和增量导入合并成一个语句,非常方便。我的使用方式如下所示1。配置schemaXml代码 <requestHandlername="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler"> <lstname="defaults"& 阅读全文
posted @ 2012-07-28 19:33 刺猬的温驯 阅读(3673) 评论(0) 推荐(1) 编辑

摘要: 一、Facet介绍 solr facet 是solr搜索的一大特色,facet不好翻译,有说是垂直搜索,有说是分片搜索,但都不是很好,还是懒得翻译了,就叫facet ,具体功能看下面的例子意会吧。 比如你上淘宝,输入“笔记本”进行搜索,就会出现品牌分类,价格范围等分类,这个就叫facet了。这个例子也许好不是那么准确的描述facet,不过基本上就是这个意思。对输入关键字后搜索出来的结果再进行分类。二、Facet查询进行Facet查询需要在请求参数中加入”facet=on”或者”facet=true”只有这样Facet组件才起作用.1.FieldFacetFacet字段通过在请求中加入”face 阅读全文
posted @ 2012-07-28 19:28 刺猬的温驯 阅读(6635) 评论(0) 推荐(0) 编辑

摘要: solr将以导航为目的的查询结果称为facet. 它并不会修改查询结果信息, 只是在查询结果上根据分类添加了count信息, 然后用户根据count信息做进一步的查询, 比如淘宝的查询列表中, 上面会表示不同的类目相关查询结果的数量.比如搜索数码相机, 在搜索结果栏会根据厂商, 分辨率等维度列出, 这里厂商, 分辨率就是一个个facet.然后在厂商下面会有nikon, canon, sony等品牌, 这个叫约束(constraints)接下来是根据选择, 列出当前的导航路径, 这个叫面包屑(breadcrumb).solr有几种facet:普通facet, 比如从厂商品牌的维度建立fact查询 阅读全文
posted @ 2012-07-28 19:26 刺猬的温驯 阅读(732) 评论(0) 推荐(0) 编辑