随笔分类 -  搜索引擎

摘要:Solandra,从别名上就能看出来,其实它就是结合了Solr与Cassandra的实时搜索引擎程序。其特性如下:支持Solr的大多数默认特性(search, faceting, highlights)数据复制,分片,缓存及压缩这些都由Cassandra来进行Multi-master (任意结点都可供读写)实时性高,写操作完成即可读到Easily add new SolrCores w/o restart across the cluster 轻松添加及重启结点这是来自官方的介绍:Solandra is a real-time distributed search engine built o 阅读全文
posted @ 2011-11-24 16:16 爱开卷360 阅读(3611) 评论(0) 推荐(0)
摘要:Lily是什么Lily是一个可扩展的数据仓库。用于数据的存储和搜索。Lily是一个分布式系统,她并不是白手起家的,她依赖于两个已有的OpenSource软件,一个是HBase, 另一个是SOLR. 同时Lily对于使用者提供自己的操作接口,称作Lily API.Lily的优势在于她强大的搜索能力,无论是文本匹配还是全文索引,通通都能搞定。但我觉得Lily在获取这些优势的同时付出了相当大的代价,最主要的代价就是系统的复杂性。想想看,为了能够使用Lily,你需要安装并维护以下系统:HDFS, HBase, Zookeeper, SOLR, Lily. 这些系统任何一个都可能让Operation T 阅读全文
posted @ 2011-11-24 15:57 爱开卷360 阅读(6204) 评论(1) 推荐(0)
摘要:前几次我们讲到了solr的基本用法和配置文件,接下来就开始进入我们真正的代码之旅啦。1)首先以一个简单的程序来开头:public static void main(String[] args) throws SolrServerException, IOException, ParserConfigurationException, SAXException{ //设置solr.home,注意这时通过环境变量是solr.solr.home System.setProperty("solr.solr.home","E:\\solr"); ... 阅读全文
posted @ 2011-11-23 16:35 爱开卷360 阅读(6852) 评论(1) 推荐(0)
摘要:停止词,是由英文单词:stopword翻译过来的,原来在英语里面会遇到很多a,the,or等使用频率很多的字或词,常为冠词、介词、副词或连词等。如果搜索引擎要将这些词都索引的话,那么几乎每个网站都会被索引,也就是说工作量巨大。可以毫不夸张的说句,只要是个英文网站都会用到a或者是the。那么这些英文的词跟我们中文有什么关系呢? 在中文网站里面其实也存在大量的stopword,我们称它为停止词。比如,我们前面这句话,“在”、“里面”、“也”、“的”、“它”、“为”这些词都是停止词。这些词因为使用频率过高,几乎每个网页上都存在,所以搜索引擎开发人员都将这一类词语全部忽略掉。如果我们的网站上存在大量这 阅读全文
posted @ 2011-11-23 15:28 爱开卷360 阅读(22146) 评论(0) 推荐(0)
摘要:前两天,学习了solr的基本用法,接下来我们就开始真正来学习一下solr。学习一下它的文件结构,配置文件等。以我们现在学习的阶段,最重要的文件夹就是example文件夹,这个里面包含了许多我们要学习的东西。我们再来看一下该文件夹结构 我们看到这样的文件结构,文件夹的意思大家肯定都看得懂,这里只介绍两个文件夹,multicore和solr。multicore是多个solr实例时才需要用到,现在我们暂时没用,先不管它。solr是自带的一个solr.home,这个是我们此次介绍的重点。进入此文件夹,我们可以看到如下的结构: bin文件夹为我们有额外的处理脚本时,需要放在这里,这里暂时没用到,... 阅读全文
posted @ 2011-11-23 13:51 爱开卷360 阅读(5330) 评论(0) 推荐(0)
摘要:接着上篇http://cxshun.iteye.com/blog/1039445,我们讲了怎么初始化配置solr,并运行。问题来了,当我们配置完成后,索引当中并没有任何东西,就是说我们查询得到的结果永远是0。现在这篇文章,我们要讲的就是如果添加数据和删除数据,并体验一下solr的基本请求参数的用法。1)首先,我们必须知道,solr添加数据类型可以有多种格式,最常用的是XML和JSON,这两种的可读性是最好的。在solr的example/exampledocs文件夹内有自带一些XML格式的文件,便于我们进行添加数据。首先呢,又是一些废话,当然是启动example自带的jetty啦,还是上次的.. 阅读全文
posted @ 2011-11-22 14:39 爱开卷360 阅读(2774) 评论(0) 推荐(0)
摘要:由于工作原因,这段时间接触到solr,一个基于lucene的企业级搜索引擎。不怎么了解它的童鞋可以去GOOGLE一下。下面开始正题:1)要开始solr的学习,首先当然是要下载它啦(这是一句废话),可以到http://www.apache.org/dyn/closer.cgi/lucene/solr/这里去下载,最新的是1.4.1(现在已经是3.4了,但依然适用)。下完后当然要解压啦(这也是废话)。我们看到它的结构是这样的。 相信搞JAVA的同志们应该都大概了解对应的文件夹的意思啦,在dist里面是它的一些JAR包,当中包含了一个war包,这个是我们做例子时用到的项目。直接把它丢到tomcat. 阅读全文
posted @ 2011-11-22 13:28 爱开卷360 阅读(2838) 评论(0) 推荐(0)
摘要:Solr 是基于lucene的检索服务器。能够很快的搭建检索服务,并且提供的很多实用的组件。例如高亮(highlight)、拼写检查(spellCheck)和匹配相位(moreLikeThis)。下面我将在我工作中接触到的一些实践与大家分享。(我当前使用的solr 版本是 3.4,使用tomcat 7.0.21)(如果你也使用的是 tomcat 服务器,而且查询请求包含中文的话,还需要修改 TOMCAT_HOME/conf/server.xml 的 <Connector ... URIEncoding="UTF-8"/> 使用 UTF-8 编码,详见URI_Ch 阅读全文
posted @ 2011-11-21 14:51 爱开卷360 阅读(2656) 评论(0) 推荐(0)
摘要:Bobo-browse是一个基于lucene的搜索结果分组统计开源插件,可以完成对搜索结果的分组面统计,比如在淘宝上搜索“衬衣”,在搜索结果顶上显示 “长袖衬衫(10321) 短袖衬衫(32561) ”等。虽然Lucene 在3.2.0也提供了Grouping组件来提供分组统计功能,另作讨论,这里不做讨论。 据Bobo-browse项目介绍, Linkedin.com使用了该组件。 Bobo-browse仅关注搜索,对索引创建与它无关,索引的创建,继续使用标准的Lucene索引创建方法创建。 Bobo-browse项目地址为http://sna-projects.com/bobo/以下是测.. 阅读全文
posted @ 2011-11-15 18:04 爱开卷360 阅读(2963) 评论(0) 推荐(0)
摘要:bobo-browse 是一用java写的lucene扩展组件,通过它可以很方便在lucene上实现分组统计功能。可以从http://sna-projects.com/bobo/上下载和查看相关文档。下面介绍如何使用:第一步:设置相关配置文件bobo-browse 使用了spring,这里主要配置bobo.spring和field.xml两个文件。可以从他的源码例子中找到这两个文件,参考它做相应的修改。bobo.spring<?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" 阅读全文
posted @ 2011-11-15 12:21 爱开卷360 阅读(1476) 评论(0) 推荐(0)
摘要:在IndexSearcher类中有一个管理Lucene得分情况的方法,如下所示:1 public Explanation explain(Weight weight, int doc) throws IOException {2 return weight.explain(reader, doc);3 }返回的这个Explanation的实例解释了Lucene中Document的得分情况。我们可以测试一下,直观地感觉一下到底这个Explanation的实例都记录了一个Document的哪些信息。写一个测试类,如下所示: 1 package org.shirdrn.lucene.lea... 阅读全文
posted @ 2011-11-15 10:01 爱开卷360 阅读(1272) 评论(0) 推荐(0)
摘要:开场白:作为一个人才网站的搜索功能,不但需要考滤搜索性能与效率,与需要注意用户体验,主要体现于用户对搜索结果的满意程度.大家都知道Lucene的排序中,如果单纯使用Lucene的DefaultSimilarity作为一个相似度的排序,意思是说总体上越相关的记录需要排得越前,但事与愿违.这样使用户体现也表现得相当糟糕.关键字"程序员"标题中也不能保证全部都匹配到(搜索结果来自 www.jobui.com 职友集) [下图]起因:之很长一段时间我都注重于搜索性能与速度的提高,而对于搜索结果对用户的体验却一直没有太多的关注,现在需要关注一下用户体现这个东西了.同时技术上也作为一些 阅读全文
posted @ 2011-11-14 11:35 爱开卷360 阅读(8108) 评论(2) 推荐(0)
摘要:现象:在synonyms.txt输入中文同义词后,Tomcat启动报错,不能读取文件。原因:使用SOLR加入中文同义词需要把synonyms.txt的默认编码改成与自己系统使用的编码一致。 比如说:你整个系统的编码都是用UTF-8,那么你就要把synonyms.txt这个文件的编码格式转换成UTF-8。原因是,对某个词进行同义的时候找到的词是乱码,而乱码在对于的索引中是没有存在的。这也就导致了中文不可以使用的原因。解决:在eclipse里把synonyms.txt文件编码格式转成UTF-8(系统默认UTF-8),然后再输入中文同义词,保存,重启tomcat,问题解决。总结:SOLR中文分词无法 阅读全文
posted @ 2011-11-14 11:03 爱开卷360 阅读(2962) 评论(0) 推荐(0)
摘要:基于词典的逆向最大匹配中文分词算法,能实现中英文数字混合分词。比如能分出这样的词:bb霜、3室、乐phone、touch4、mp3、T恤。实际分词效果比正向分词效果好 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicclass RMM{ privatestaticfinal Log log = LogFactory.getLog(RMM.class); privatestatic HashMap<String, Intege 阅读全文
posted @ 2011-11-11 16:48 爱开卷360 阅读(1556) 评论(1) 推荐(0)
摘要:基于词典的正向最大匹配中文分词算法,能实现中英文数字混合分词。比如能分出这样的词:bb霜、3室、乐phone、touch4、mp3、T恤第一次写中文分词程序,欢迎拍砖。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicclass MM2 { privatestaticfinal Log log = LogFactory.getLog(MM2.class); privatestatic HashMap<String, Integ 阅读全文
posted @ 2011-11-11 16:46 爱开卷360 阅读(2568) 评论(0) 推荐(0)
摘要:1、 StopAnalyzerStopAnalyzer能过滤词汇中的特定字符串和词汇,并且完成大写转小写的功能。2、 StandardAnalyzerStandardAnalyzer根据空格和符号来完成分词,还可以完成数字、字母、E-mail地址、IP地址以及中文字符的分析处理,还可以支持过滤词表,用来代替StopAnalyzer能够实现的过滤功能。3、 SimpleAnalyzerSimpleAnalyzer具备基本西文字符词汇分析的分词器,处理词汇单元时,以非字母字符作为分割符号。分词器不能做词汇的过滤,之进行词汇的分析和分割。输出地词汇单元完成小写字符转换,去掉标点符号等分割符。在全文检 阅读全文
posted @ 2011-11-11 12:07 爱开卷360 阅读(6830) 评论(0) 推荐(0)
摘要:介绍一下Solr的分组查询方式:public static Map<String, Integer> queryByGroup(String qStr,String groupField,String sortField,boolean asc,Integer pageSize,Integer pageNum){ Map<String, Integer> rmap = new LinkedHashMap<String, Integer>(); try { SolrServer server = getSolrServer();//getSolrServer( 阅读全文
posted @ 2011-11-10 09:56 爱开卷360 阅读(2880) 评论(0) 推荐(0)
摘要:solr 查询参数说明备忘常用q - 查询字符串,必须的。fl - 指定返回那些字段内容,用逗号或空格分隔多个。start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。rows - 指定返回结果最多有多少条记录,配合start来实现分页。sort - 排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。wt - (wr 阅读全文
posted @ 2011-11-10 09:51 爱开卷360 阅读(1054) 评论(0) 推荐(0)
摘要:在Tomcat6增加 Solr的访问权限方法如下:编辑tomcat6/Catalina/localhost/solr.xml<Context docBase="/var/solr/solr.war" debug="0" privileged="true" allowLinking="true" crossContext="true"><Environment name="solr/home" type="java.lang.String" 阅读全文
posted @ 2011-11-07 14:46 爱开卷360 阅读(7137) 评论(0) 推荐(1)
摘要:solr服务器类PersonSolrServer.java:import java.net.MalformedURLException; import java.util.ArrayList; import java.util.List; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.impl.BinaryRequestWriter; import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer... 阅读全文
posted @ 2011-11-03 15:04 爱开卷360 阅读(3429) 评论(0) 推荐(0)