随笔分类 -  搜索引擎

摘要:解密搜索引擎技术实战:Lucene&Java精华版出版社:电子工业出版社; 第1版 (2011年5月1日)平装:548页ISBN:7121133938, 9787121133930条形码:9787121133930商品尺寸:25.8 x 18.4 x 3.4 cm商品重量:980 gASIN:B0053H5LMC内容简介 本书是猎兔搜索开发团队的软件研发和教学实践的经验汇总。 本书总结搜索引擎相关理论与实际解决方案,并给出了Java实现,其中利用了流行的开源项目Lucene和Solr,而且还包括原创的实现。 本书主要包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例 阅读全文
posted @ 2011-12-09 11:13 爱开卷360 阅读(1797) 评论(1) 推荐(1)
摘要:Lucene实战(第2版)出版社:人民邮电出版社; 第1版 (2011年6月1日)平装:454页正文语种:简体中文开本:16ISBN:7115251770, 9787115251770条形码:9787115251770商品尺寸:23.2 x 18.4 x 2.2 cm商品重量:662 gASIN:B0053FPAGQ内容简介Michael McCandless的《Lucene实战(第2版)》基于Apache的Lucene 3.0,从Lucene核心、Lucene应用、案例分析3个方面详细系统地介绍了Lucene,包括认识Lucene、建立索引、为应用程序添加搜索功能、高级搜索技术、扩展搜索、使 阅读全文
posted @ 2011-12-09 10:12 爱开卷360 阅读(1795) 评论(1) 推荐(1)
摘要:《Lucene in Action》第二版中对MoreLikeThis 介绍的例子,搜索类似的书籍,代码如下,供大家学习参考:public class BooksMoreLikeThis {public static void main(String[] args) throws Throwable {String indexDir = System.getProperty("index.dir");FSDirectory directory = FSDirectory.open(new File(indexDir));IndexReader reader = IndexR 阅读全文
posted @ 2011-12-07 10:56 爱开卷360 阅读(1750) 评论(0) 推荐(0)
摘要:采用基于数据挖掘的算法来实现推荐引擎是各大电子商务网站、SNS社区最为常用的方法,推荐引擎常用的Content-Based推荐算法及协同过滤算法(Item-Based 、User-based)在电子商务推荐系统入门v2.0、电子商务推荐系统入门基础中已经有所阐述。但从实际应用来看,对于大部分中小型企业来说,要在电子商务系统完整采用以上算法有很大的难度。1、常用推荐引擎算法问题1)、相对成熟、完整、现成的开源解决方案较少粗略分来,目前与数据挖掘及推荐引擎相关的开源项目主要有如下几类:数据挖掘相关:主要包括Weka、R-Project、Knime、RapidMiner、Orange等文本挖掘相.. 阅读全文
posted @ 2011-12-05 17:29 爱开卷360 阅读(1168) 评论(0) 推荐(0)
摘要:一 直接使用 Lucene (http://lucene.apache.org)说明:Lucene 是一个 JAVA 搜索类库,它本身并不是一个完整的解决方案,需要额外的开发工作优点:成熟的解决方案,有很多的成功案例。apache 顶级项目,正在持续快速的进步。庞大而活跃的开发社区,大量的开发人员。它只是一个类库,有足够的定制和优化空间:经过简单定制,就可以满足绝大部分常见的需求;经过优化,可以支持 10亿+ 量级的搜索。缺点:需要额外的开发工作。所有的扩展,分布式,可靠性等都需要自己实现;非实时,从建索引到可以搜索中间有一个时间延迟,而当前的“近实时”(LuceneNear Real Tim 阅读全文
posted @ 2011-12-05 17:17 爱开卷360 阅读(2077) 评论(0) 推荐(0)
摘要:在 Google 上尝试一个查询,您会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档。Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeThisHandler 实现了一样的功能。如上所述,MLT 是与标准 SolrRequestHandler 集成在一起的;MoreLikeThisHandler 与 MLT 结合在一起,并添加了一些其他选项,但它要求发布一个单一的请求。我将着重讲述 MLT,因为使用它的可能性更大一些。幸运的是,不需要任何设置就可以查询它,所以您现在就可以开始查询。 ML... 阅读全文
posted @ 2011-12-02 10:50 爱开卷360 阅读(3163) 评论(0) 推荐(0)
摘要:Bobo-browse是一个基于lucene的分组统计插件,可以完成对搜索结果的分面统计,比如“男装(221) 女装(332)”等。这里做首次尝试,只谈使用,不谈原理。用熟了才有可能去研究仔细。lucene3 + bobo-browse2.5建索引,更新索引跟它没关系,仅关注搜索。索引建立好后,开始进行分面搜索。bobo-spring.xml:<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/be 阅读全文
posted @ 2011-12-01 13:31 爱开卷360 阅读(1490) 评论(0) 推荐(0)
摘要:遗留问题前两篇文章中提到了检索的时候不支持的一些特性,比如孙燕姿这个名字输入syanz无法查找,为了解决这个问题,今天又对切词的部分进行了修正。解决对于名字字段进行两种全拼和简拼转换,比如孙燕姿,拼音转换后的结果是sunyanzi,syz,然后再对这个转换结果进行前向后向两个方向的N-Gram切分。原有的设计是拼音转换有四种,对于“沈世卿”这样的名字,拼音转换结果有shenshiqing,shshq, ssq, shensq,通过这个方式枚举所有组合编码上不漂亮,设计起来也不nice。所以放弃了这种方式。同时增加了了一个类似于SpellCheck的字段,这个是参考自:http://lucene 阅读全文
posted @ 2011-11-30 15:44 爱开卷360 阅读(1393) 评论(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 阅读(2008) 评论(0) 推荐(0)
摘要:需求实现联系人信息(姓名,电话,邮件,地址等信息的快速实时检索)姓名字段:全拼的任意相邻组合,每个单字拼音首字母的任意相邻组合,举例:沈从文的全拼是shencongwen,每个单字拼音首字母scw,那么检索shen,shencong,congwen,shencongwen, sc,cw,scw都要能检索出沈从文,当然中文也要ok,比如:沈从,从文,沈从文,沈都要能包含这一条结果,遵循这个思路设计的联系人搜索甚至不自觉的也支持了混合输入比如沈congwen也能检索出沈从文电话:不少于三个字符的任意前缀后缀都要能检索出来。邮件地址等信息:使用lucene的StandardAnalyzer来分词,所 阅读全文
posted @ 2011-11-30 15:33 爱开卷360 阅读(4599) 评论(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 阅读(5775) 评论(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 阅读(10062) 评论(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 阅读(6062) 评论(2) 推荐(2)
摘要:介绍katta 是一个运行在许多商品硬件服务器上的分布式应用,它非常类似于Hadoop MapReduce, Hadoop DFS, HBase, Bigtable 和 Hypertable.概述主节点服务器管理从节点服务器和index shards任务。从节点服务器服务index shards。客户端允许从所有连接的节点上查找数据,并把所有的结果合并成一个结果返回给客户端。数据结构katta的索引是个文件夹,它里面包含一套所谓的index shards(文件形式)。这些子文件包含了Lucene索引。index shards能够很简单的用Lucene的index writer创建。创建一个ka 阅读全文
posted @ 2011-11-29 15:21 爱开卷360 阅读(4106) 评论(4) 推荐(0)
摘要:一、总体架构Zoie是一个实时的搜索引擎系统,其需要逻辑上独立的索引和搜索子系统相对紧密的结合在一起,从而使得一篇文档一经索引,就能够立刻被搜索的到。ZoieSystem是Zoie的重要组成部分,其一方面通过实现DataConsumer接口而完成了索引功能,一方面通过实现IndexReaderFactory<ZoieIndexReader<R extends IndexReader>>而完成了搜索功能,并将二者紧密的结合在一起。下面就是ZoieSystem的总体架构图:对于索引系统来讲,ZoieSystem是一个DataConsumer,也即是一个消费者,其有函数con 阅读全文
posted @ 2011-11-29 14:37 爱开卷360 阅读(2405) 评论(1) 推荐(0)
摘要:Solr的配置网上讲的很多,但是实施总是遇到困难,现总结如下:1.从官网下载solr core的源码包,将solrwar包放到tomcat的webapps文件夹下,其它web容器亦然. 运行tomcat ,解压出来solr的文件夹.2.Single core配置:以solr自带例子做讲解 2.1.新建solrhome目录:d:/test/solrcore/singlecore ,从solr源码的example包下复制solr包 2.2.在tomcat 下的 webappss的solr包 WEB-INF目录下修改web.xml的<env-entry-name>solr/home< 阅读全文
posted @ 2011-11-29 12:36 爱开卷360 阅读(3502) 评论(1) 推荐(0)
摘要:Apache Solr项目,是一款基于Apache Lucene的开源企业搜索服务器,最近发布了1.3版。InfoQ采访了Solr的创建者Yonik Seeley,了解了新版本的更多信息和Solr提供给最终用户的功能。Seeley首先描述了目标用户:“需要搜索框、分面浏览(导航)或者两者结合的任何人”,Solr的关键特性包括:基于标准的开放接口——Solr搜索服务器支持通过XML、JSON和HTTP查询和获取结果。易管理——Solr可以通过HTML页面管理,服务器统计数据以JMX输出,Solr配置通过XML完成。分面浏览——搜索结果自动分类。突出显示命中词——匹配的字符自动在搜索结果中高亮显示 阅读全文
posted @ 2011-11-29 11:33 爱开卷360 阅读(1122) 评论(0) 推荐(0)
摘要:如果想在solr实现像百度一样相似的竟价的排名,也是可以的,在solr中实现竟价排名,主要使用QueryElevationComponent组件,solrconfig.xml配置:<searchComponent name="elevator" class="solr.QueryElevationComponent"> <!-- pick a fieldType to analyze queries --> <str name="queryFieldType">string</str> 阅读全文
posted @ 2011-11-28 15:07 爱开卷360 阅读(3444) 评论(2) 推荐(0)
摘要:positionIncrement:这个字段决定当前token相对于上一个token的位置(当前token的位置就是上一个token位置的值与positionIncrement的值的和),它的作用主要体现在短语查询(phrase search)中. 一般它的默认值是1.但是可以把它设置为0或者大于1的值,起作用分别如下:当设置为0的时候是一个词有多个词干的情况下(这里指英文).短语查询对短语中的两个词之间的其它词的数量是有严格要求的,如果想进行严格匹配就可能限制为0,即两个词必须紧紧相连.这样如果不认为一个词产生的若干词干是在同一位置,就相当于认为他们是不同的词了,从而导致无法正确的匹配... 阅读全文
posted @ 2011-11-25 14:58 爱开卷360 阅读(1107) 评论(1) 推荐(1)
摘要:SolrCloud是基于Solr和Zookeeper的分布式搜索方案,已经进入Solr的代码库,成为下个Release(估计是4.0)的分布式部署方案。Cloud使用Zookeeper作为配置中心,存储关于分布式的节点信息。各个节点之间依然使用HTTP连接来获取查询结果。前提:索引已经创建完毕,并且分成片,即Shard。以下是官方对SolrCloud的介绍:SolrCloud is the set of Solr features that take Solr's distributed search to the next level, enabling and simplifyin 阅读全文
posted @ 2011-11-24 16:27 爱开卷360 阅读(2574) 评论(0) 推荐(0)