
solr
Kehl
这个作者很懒,什么都没留下…
展开
-
solr 自定义QueryParser 用户查询解析方案
背景一个完整的搜索流程,query其实是最关键的角色,它甚至比人的标签等信息更加关键,这也是PPC这种搜索广告赚钱的基本保障。 我们作为搜索服务提供商,能够怎么应对这些query,并且根据用户输入的query构造出不同的lucene布尔查询,这是非常关键的一个问题。拿之前做过的地图检索为例,用户输入:上海市浦东新区罗山路28号,我们的底层schema存有省,市,县,区,街道等信息,那么我们如果把用原创 2016-06-14 18:33:05 · 3175 阅读 · 0 评论 -
solr 个性化打分
背景搜索排序怎么排呢,如果还是想着怎么改similarity或者SchemaSimilarityFactory就范围太小了,similarity只能提供一个文本相关性得分,不管你怎么boost去调整,最后你会发现这他妈根本不是你想要的打分逻辑,tf, idf, lengthnorm, coord,boost,甚至还涉及到lucene-core 下SmallFloat的精度问题,一团乱麻。方案可以扩展原创 2016-06-14 21:32:36 · 2748 阅读 · 5 评论 -
Solr Lucene Group查询
Solr Group查询背景搜索引擎在某种意义上也是一直数据库,写过sql的应该都知道group这个关键字,在有些场景下我们也需要搜索提供类似group的功能,例如作为基于信息流的电商我们需要按照不同的时间段返回结果,举个例子,就是先展示最近3天的商品,然后再展示3-7天的商品,那么group在solr里,或者说在lucene里是怎么实现的呢?group思路先介绍下大体思路,当然这个思路也是参考过s原创 2016-07-06 20:39:49 · 923 阅读 · 1 评论 -
lucene中的Filter
前言用Lucene一定不能不知道Filter,Filter在合适的场景下能大大提升搜索性能背景最近在折腾solr,这个3年前“玩过”的东西,现在又来玩了,3年前是瞎比玩,只知道最上层的一些接口,却不知其所以然,而现在的目标就是要把solr以及lucene底层的核心代码都分析一遍,并成功的部署一套电商搜索解决方案。Filter逻辑Filter的构造逻辑其实本身和Query的构造逻辑差距不大,唯一一点不原创 2016-06-23 21:28:57 · 1262 阅读 · 0 评论 -
solr 4.2 使用插件链来完善、简化增量index逻辑
业务背景之前做村淘的时候开发过一个插件,即动态的根据商品的类目判定该商品是不是要被和谐,所以了解到在update商品信息的时候,商品是肯定会经过一个由若干Processor组成的chain最终进入底层索引的现在遇到的问题是这样的,当前的商品逻辑比较复杂,有很多不是从db里得到的字段,进索引时会根据业务逻辑做相应的处理,例如时间间隔,title,以及离线的一些分数,例如商品预测质量分等。全量索引时逻辑原创 2016-11-08 21:54:25 · 1123 阅读 · 1 评论 -
Solr完整个性化搜索排序方案
Solr个性化搜索排序A厂的排序方案是添加各种各样的排序链,用于支持各个业务场景下的搜索排序功能,之前我们主搜排序以及筛选页的逻辑非常简单,就是文本相关性+业务分(业务加分+业务扣分),搜索结果干预功能也很直接,这些模块都直接添加在SolrIndexSearcher中,为的是最快的支持搜索排序业务,然后就这么撑了6个月。。。我们发现,用到排序的场景越来越多,比如首页很关键的两个入口:推荐资源和推荐寻原创 2017-02-14 14:45:51 · 6958 阅读 · 15 评论 -
solr 的commit, soft commit等
背景最近又被soft commit 和 hard commit搞得有点迷糊,其实都怪自己没有早点看源代码。问题出自这段代码,这也是我一开始接触solr时,查到的代码sample(事实证明问题都出在这里,引以为戒,有问题真的不要不求甚解)if (rs.next()){ while (true) { NiuniuSolrInputDocument doc = new Niuniu原创 2016-07-01 14:50:57 · 3982 阅读 · 0 评论 -
solr spellcheck 距离选取方案
spellcheck本质上工作机制是两步:1. ngram进行候选检索2. 选取ngram打分最高的几个,进行距离计算,如果距离大于solrconfig中的accuracy配置项,就返回该纠错结果之前沿用了默认配置项编辑距离,strname="distanceMeasure">org.apache.lucene.search.spell.LevensteinDistan原创 2017-06-16 17:41:11 · 797 阅读 · 0 评论 -
solr fieldLength fieldNorm精度影响搜索结果的得分
1.USolr.jar 中修正了edismax默认如果查询中有空格,这个空格代表的意思是and,所以需要手动将空格用正则表达式替换为单个空格,然后再将单个空格替换为" or ",从而满足 query “复旦大学 枫林 图书馆” 时不会出现垃圾结果,儿应该使复旦大学张江图书馆等类似信息靠前。2.将索引中所有XX人民政府的信息全部删除并且重新建立索引,将“人民”二字剔除并存储到别名var_al原创 2014-02-28 11:44:26 · 2353 阅读 · 1 评论 -
solr 同义词 synonym
1.今天更新索引,对Solr建索引的方式又有了新的了解,即server.add(docs)这个方法是一个update的方法,而其update的依据是id,即如果索引中已经存在对应这个id的纪录,则对其进行更新,更新的方法是用新的doc替换已有的纪录。而如果没有这个id对应的纪录则添加新的纪录。2.synonym。synonym的效果与设想不同。设想是:synonyms.txt中,有原创 2014-02-28 11:46:03 · 1696 阅读 · 0 评论 -
solr 失误的空格 空格是or还是and
嗯,今天fix了一个困扰我很久的bug,发现真的是被一个“bug”级别的bug困扰好久,甚至还堂而皇之地动用各种方法去修正dixmax查询方式,去修正英文的检索,其实一个小小的back slash就将哥弄头疼了!! \\\\\\\\\错误描述:张博用dismax方式查“复旦大学 枫林 图书馆”时,出现的第一条纪录是南京的“敬文图书馆”,让人大跌眼镜。类似的问题有“南京市 玄武湖”等原创 2014-02-28 12:06:25 · 4491 阅读 · 0 评论 -
solr3.6到solr4.1升级,schema版本号区别等
应甲方公司要求,将现在正在使用的solr 3.6版本升到4.1,没有怎么了解4.1,但是驱使我们去升级solr版本的一个原因就是solr 3.6的cache机制会导致memory leak。下面是我的替换过程,还是花了蛮久功夫的,可能是没有经历solr4.0的缘故么?首先还是基于war包的solr4.1环境的搭建,与3.6没有区别,其实solr本身的东西更新原创 2014-02-28 11:52:05 · 1449 阅读 · 0 评论 -
solr大量索引信息导致搜索变慢
困扰好久,考虑过的方法有很多,包括修改mergeFactor,设置autowarm以及各种optimize索引的方法,但是效果都不明显。今天参考到了两篇文章:http://www.hathitrust.org/blogs/large-scale-search/slow-queries-and-common-words-part-1其中提到了这个:The short原创 2014-02-28 11:41:12 · 4900 阅读 · 0 评论 -
solr spellcheck 功能
需要实现多个field的spellcheck功能,一直犯迷糊,现在知道怎么用了 default solr.IndexBasedSpellChecker var_poi_chinese_str spellchecker 0.7 true brand solr.IndexB原创 2014-03-03 19:23:16 · 3045 阅读 · 0 评论 -
Solr Facet
参考来源:http://martin3000.iteye.com/blog/1330106一、Facet介绍solr facet 是solr搜索的一大特色,facet不好翻译,有说是垂直搜索,有说是分片搜索,但都不是很好,还是懒得翻译了,就叫facet ,具体功能看下面的例子意会吧。 比如你上淘宝,输入“笔记本”进行搜索,就会出现品牌分类,价格范围等分类,这个就转载 2014-03-24 15:49:42 · 1034 阅读 · 0 评论 -
solr4.2 索引路径设定 修改solr/home
最近在ubuntu下折腾tomcat7+solr4.2由于之前有一些经验,知道我可以把索引的路径在solr/home的solr.xml文件中设置,例如: 这一步没有问题。但是如何设置我的solr/home呢?也就是问,怎么样指定我的solr.xml的路径。因为默认该文件会放在tomcat的bin下,所以如果想要灵活一些,需要找到这个的指原创 2015-05-06 16:30:51 · 2808 阅读 · 0 评论 -
Solr为不同的fieldType配置Similarity
Similarity业务需要,想对不同的field使用不同的similarity。继承DefaultSimilarity实现里面的方法,重写了tf, idf,toString这三个方法,直接在schema中替换就可以对不同的field使用不同的similarity在schema中可以设置similarity,发现不太行,solr4.2并不支持这么细粒度的similarity用法,不过可以支持不同的f原创 2015-11-06 00:04:52 · 3320 阅读 · 0 评论 -
solr的schema中几个特殊参数明细
positionIncrementGap使用场景:multi-value field对应的phrase query场景 Suppose a document has a multi-valued “author” field. Like this: author: John Doe author: Bob Smith With a position increment gap of 0,原创 2017-07-19 17:56:31 · 820 阅读 · 0 评论