摘要: 遗留问题前两篇文章中提到了检索的时候不支持的一些特性,比如孙燕姿这个名字输入syanz无法查找,为了解决这个问题,今天又对切词的部分进行了修正。解决对于名字字段进行两种全拼和简拼转换,比如孙燕姿,拼音转换后的结果是sunyanzi,syz,然后再对这个转换结果进行前向后向两个方向的N-Gram切分。原有的设计是拼音转换有四种,对于“沈世卿”这样的名字,拼音转换结果有shenshiqing,shshq, ssq, shensq,通过这个方式枚举所有组合编码上不漂亮,设计起来也不nice。所以放弃了这种方式。同时增加了了一个类似于SpellCheck的字段,这个是参考自:http://lucene 阅读全文
posted @ 2011-11-30 15:44 爱开卷360 阅读(1377) 评论(0) 推荐(0) 编辑
摘要: 改进1. 上一篇文章中的联系人拼音搜索中对于不同的拼音形式创建了不同的Lucene Field来保存,这样的设计不便于检索和高亮显示,所以对这方面进行了改进。2. 还有一处细微的改进是提供了对于sunyz(孙燕姿sunyanzi)这样的检索条件的支持,也就是切词后的第一个字全拼,后续中文字简拼的支持。比如yanz也可以作为搜索词使用。实现对于改进1,拷贝了ICUTransformFilter代码进行了修改,使得可以对同一个term产生多个拼音结果,用一组ICU Transliterator来进行转换,这一组ICU Transliterator通过参数传递进来。/** * Licensed to 阅读全文
posted @ 2011-11-30 15:40 爱开卷360 阅读(1983) 评论(0) 推荐(0) 编辑
摘要: 需求实现联系人信息(姓名,电话,邮件,地址等信息的快速实时检索)姓名字段:全拼的任意相邻组合,每个单字拼音首字母的任意相邻组合,举例:沈从文的全拼是shencongwen,每个单字拼音首字母scw,那么检索shen,shencong,congwen,shencongwen, sc,cw,scw都要能检索出沈从文,当然中文也要ok,比如:沈从,从文,沈从文,沈都要能包含这一条结果,遵循这个思路设计的联系人搜索甚至不自觉的也支持了混合输入比如沈congwen也能检索出沈从文电话:不少于三个字符的任意前缀后缀都要能检索出来。邮件地址等信息:使用lucene的StandardAnalyzer来分词,所 阅读全文
posted @ 2011-11-30 15:33 爱开卷360 阅读(4550) 评论(1) 推荐(0) 编辑
摘要: 在之前的两个部分(part1、part2)中,我们学会了如何配置和查询solr来获取自动完成的功能。今天,我们来看一下如果为suggester添加字段,以这种方式来提供自动完成的功能。组件配置在上一期的配置组件中添加如下的参数:<str name="sourceLocation">dict.txt</str> 这样我们的配置就变成了:<searchComponent name="suggest" class="solr.SpellCheckComponent"> <lst name=" 阅读全文
posted @ 2011-11-30 15:03 爱开卷360 阅读(5753) 评论(3) 推荐(0) 编辑
摘要: 在Solr的自动完成/自动补充实现介绍(第一部分)中我介绍了怎么用faceting的机制来实现自动完成(autocomplete)的功能,今天我们来看一下如何用Suggester的组件来实现自动完成功能.开始这里有一点需要提醒:Suggest组件在1.4.1或以下版本不可用。要使用这个组件,你需要下载3_x或lucene/solr的主干版本。配置在索引配置之前,我们定义一个searchComponent:<searchComponent name="suggest" class="solr.SpellCheckComponent"> < 阅读全文
posted @ 2011-11-30 14:41 爱开卷360 阅读(10028) 评论(5) 推荐(1) 编辑
摘要: 大部分人已经见过自动完成(autocomplete)的功能了(见下图),solr提供了构建这个功能的机制。今天,我将给你展示如何使用facet的方式来添加自动完成机制。索引设想你想在你的在线商店中,给用户一些提示,比如商品的名称。假设我们的索引构建如下:<field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/> <field 阅读全文
posted @ 2011-11-30 14:32 爱开卷360 阅读(6048) 评论(2) 推荐(2) 编辑