搜索引擎
起个马甲好困难
这个作者很懒,什么都没留下…
展开
-
Lucene基本相关度算法与网上流传的针对web的改进算法
1.Lucene的Score计算公式:coord(q,d): 文档d中,q中命中的项数除以查询q的项总数queryNorm(q): 只在不同query比较时影响score的normalizing因素tf(t in d):单文本词汇频率,t在文档d中出现的次数除以d中所有的项总数的平方根idf(t):逆文本频率指数,log(numDocs/docFreq+1)+1.0转载 2015-04-26 18:54:44 · 697 阅读 · 0 评论 -
利用Lucene打造站内搜索引擎的思路
1.为什么要用Lucene,而不用直接从数据库里搜索记录?主要是考虑到几个因素:(1)性能问题,Lucene是基于文件索引的搜索机制,性能要比数据库里检索更快,特别是数据量大的时候两者区别比较明显。数据 库用Select检索时,默认在执行sql语句时,会对表锁定,直到查询完成;(2)目前很多网站,都已经将页面静态化,这种情况下,直接用生成的文件编 制索引,再利用Lucene来检索,可以不用查询转载 2015-04-26 19:05:26 · 316 阅读 · 0 评论 -
关于Lucene中的updateDocument()方法的使用
关于Lucene的updateDocument(),发现比较难理解。于是上网找了一下资料,然后实操一翻,终于明白了这个方法的使用。 public static void updateIndex(){try {IndexWriter write = new IndexWriter(path,new StandardAnalyzer(),false);Docume转载 2015-04-26 19:03:44 · 2620 阅读 · 0 评论 -
lucene的分组查询(类似sql的group by)的解决方法
通过lucene搜索去除相同结果。在网上找了很久到没有答案,到apache看了文档,http://lucene.apache.org/java/2_4_1/queryparsersyntax.html搜索语法之中是没有类似group by的。只好换个思路,想到了过滤器。结果发现了org.apache.lucene.search.DuplicateFilter这 个类。对此类的解释如下:转载 2015-04-26 19:03:09 · 400 阅读 · 0 评论 -
用Lucene的SpellChecker实现Google的“您是不是要找”功能
引言很多人在使用搜索引擎的时候,会出于各种原因,拼错想要搜索的关键字,比如键盘有问题(某个按键坏了)、不熟悉国际名称(弗洛伊德的全名 Sigmund Freud)、不小心写错字母(Sinpsons)或多写了一个字母(Frusciaante)。许多用户都很熟悉Google搜索引擎携带的“您是不是 要找”功能。这个功能在检测到搜索关键字有可能拼写错了的时候会提供一些备选建议。文本搜索在电子商务转载 2015-04-26 19:02:40 · 905 阅读 · 0 评论 -
当前几个主要的Lucene中文分词器的比较
原文见:http://blog.fulin.org/2009/08/lucene_chinese_analyzer_compare.html,更多讨论请去原文处。1. 基本介绍:paoding :Lucene中文分词“庖丁解牛” Paoding Analysisimdict :imdict智能词典所采用的智能中文分词程序mmseg4j : 用 Chih-Hao Tsai 的MM转载 2015-04-26 19:01:54 · 299 阅读 · 0 评论 -
Lucene中如何使用庖丁Paoding Analyzer分词器
【背景】给Lucene添加分词器,一般直接将分词器的jar包引入到项目就可以。但如果按照同样的方法给Lucene添加Paoding analysis,在运行时却老抛类似于java.lang.NoClassDefFoundError: net/paoding/analysis/analyzer/PaodingAnalyzer的异常。【原因】庖丁分词器Paoding Analyzer在使用前必转载 2015-04-26 19:02:30 · 1027 阅读 · 0 评论 -
提高Lucene中带Highlighter查找的效率
1、问题的来源 增加分词以后结果的准确度提高了,但是用户反映返回结果的速度很慢。原因是, Lucene 做每一篇文档的相关关键词的高亮显示时,在运行时执行了很多遍的分词操作。这样降低了性能。 2 、解决方法 在 Lucene1.4.3 版本中的一个新功能可以解决这个问题。 Term Vector 现在支持保存 Token.getPositionIncrement() 和 To转载 2015-04-26 19:00:11 · 470 阅读 · 0 评论 -
Nutch配置详解
配置软件: 1、 Java jdk-1.6 1.1 下载安装 from: http://www.sun.com 安装目录:C:\Java\jdk1.6.0_03 1.2 修改环境变量 JAVA_HOME=C:\Java\jdk1.6.0_03\bin CLASSPATH=C:\Java\jdk1.6.0_03\lib\dt.jar;C:\Java\jdk1.6.0_03转载 2015-04-26 18:59:30 · 304 阅读 · 0 评论 -
Heritrix给作业作断点续爬
使用Heritrix爬取网页时,我们往往希望能够将一次爬取工作分次进行,在下次启动时继续上次没有完成的工作,特别面对需要爬取大量网页的需求时更是如此。Heritrix(我使用的是1.14.4版本)为我们提供了这种功能。 首先我们先建立一个Job: 当需要对工作断点时,先点击Pause:注意:点击Pause后先等一阵子,让正在作保存处理的URL全都完成了才能真正暂停(注意图中转载 2015-04-26 19:00:01 · 441 阅读 · 0 评论 -
eclipse配置nutch1.1
首先建立一个java 工程。 选择从源代码中创建工程。选择nutch的解压目录。选择jre需要1.6本版的。点击finish。conf文件夹会自动被build path,如果没有手动加入一下。在工程根目录下添加一个urls文件夹,再建立个url.text文件。将需要的网址填入。修改conf里的crawl-urlf转载 2015-04-26 18:58:15 · 317 阅读 · 0 评论 -
Heritrix实现对某种URL只爬取而不将其网页保存到磁盘的方法
最近需要用Heritrix爬取大量的博客文章,然后进行分析并内容提取。 由于我只需要博客网站中的文章部分(如新浪博客的文章正则表达式是http://blog.sina.com.cn/s/blog_[0-9a-z]{16}.html(\\?tj=1)*),其它博客内容(如相片、个人介绍等)都不需要,所以必须要用正则表达式控制要下载下来URL。要实现“只爬取某种格式的URL网页”,我们可以通过转载 2015-04-26 18:55:51 · 1338 阅读 · 0 评论 -
按需扩展lucene中的score算法的思路
在lucene 的查询中,有如下4个关键点: 1) 一个Query请求 2) 这个 Query请求所对应的Weight : dependent state of the query should reside in the. 对于每个document score计算的固定部分,会事先计算并保存于weight中。这样可以避免每个 document都调转载 2015-04-26 18:53:35 · 1354 阅读 · 0 评论 -
lucene统计关键词匹配次数
IndexSearcher search = new IndexSearcher(dir); IndexReader reader = search.getIndexReader(); if(reader instanceof SegmentReader){ SegmentReader sreader =(SegmentReader)reader; //拿到Field的位置转载 2015-04-26 18:52:52 · 3686 阅读 · 2 评论 -
利用Heritrx统计抓取URL的出度和入度
本文比较长,请耐心阅读,这是一个艰苦的过程,好在我们挺过来了! 这真是一件令人兴奋的事,终于在今天搞定了网页抓取的出入度统计工作! 上周我们在抓取完所有的网页之后,得到了crawl.log文件,按照最初的计划,由于此文件中记录了全部的抓取信息,所以想利用此文件来分析该抓取任务的出入度,但是当打开这个庞大的文件的时候,我们实在是老虎吃螃蟹---无处可下爪!这个9M文件实在转载 2015-04-26 18:57:28 · 521 阅读 · 0 评论 -
Heritrix的安装与配置
准备用Heritrix来做个小的搜索引擎,以下是我在配置Heritrix的过程中遇到的各种问题,通过几个小时的查找和分析,终于把Heritrix的单独配置和在eclipse下的配置做成功了。我在配置过程中遇到问题的时候,发现网上关于这方面的资料比较少,很多人都遇到过相同的问题,但没有人具体详细的给予解答,下面我将从网上获得的资料和我个人的认识进行总结,希望对才开始配置Heritrix的朋友有所帮助转载 2015-04-26 18:56:46 · 632 阅读 · 1 评论 -
为Heritrix定制自己的QueueAssignmentPolicy
Heritrix使用了Berkeley DB来构建链接队列。这些队列被置放于BdbMultipleWorkQueues中时,总是先给予一个Key,然后将那些Key值相同的链接放在一起, 成为一个队列,也就是一个Queue。在Heritrix中,为每个队列赋上Key值的策略,也就是它的queue-assignment-policy。 Heritrix默认使用的queue-assignment转载 2015-04-26 18:57:08 · 409 阅读 · 0 评论 -
Lucene删除索引DeleteDocuments的注意事项
Lucene在删除索引时,经常会出现代码成功执行,但索引并未正直删除的现象,总结一下,要注意以下因素:1.在创建Term时,注意Term的key一定要是以"词"为单位,否则删除不成功,例如:添加索引时,如果把"d:\doc\id.txt"当作要索引的字符串索引过了,那么在删除时,如果直接把"d:\doc\id.txt"作为查询的key来创建Term是无效的,应该用Id.txt(但这样会把所有文转载 2015-04-26 19:05:50 · 2818 阅读 · 0 评论