想做个基于lucene的搜索引擎

今天看看看车东的weblucene,主要看了看xml接口部分,他使用Sax加载xml进行解析然后分析出字段进行索引,主要的类是SaxIndexer,取数据的时候以xml表现jdom实现。用xml+xslt的形式做表示层确实挺合理。
   weblucene主要提供了一个xml接口,这样需要索引的数据比如数据库,爬虫抓的经过分析的网页等等只要生成工业标准的xml,这样可以保证数据源的平台无关性。
   所以其核心就是一个Lucene的XML接口:SAX方式的数据导入和DOM方式的结果输出。
   他这个东西是jdom+sax做的,java的xml解析器可谓是种类繁多,dom,jdom,dom4j用的最多,dom4j的速度上比较快相对来说,我前面的文章也有比较过,他这个东西好久没做更新了阿,我想自己做一个按照他的思想,用dom4j解析。。
   慢慢开始研究还是界面简单隐含的内容复杂的东西好个人认为,给人一种神秘的感觉呵呵
像搜索引擎界面其实就是一个输入框和一个按钮可里面的道道可多着呢。
比如:

搜索引擎第一个基本功是速度。不论多少资料,在最多1-2秒钟就可以出结果。
第二个是模糊查询,通配符,相关度之类
第三个是人工智能,同义词,自动纠错,同音词处理等等
第四个是自动分类,爬虫技术之类
第五个是统计分析,根据统计调整关键词权值之类。
第六个是中文问题。比如同一个中文词在简体、繁体、日文、韩文中写法不同,但是搜索引擎应该可以一次搜出来。
其它的一些技术也有很多。
以前用Mysql做过ftp的搜索引擎,内容数据存在一个字段里,几十万条记录检索起来狂慢还
全文模糊检索数据库没法作索引,只能对日期大小之类的做个索引,可如果用户把大小的范围设得很小那又完了。。。没有实质的解决,这次用基于文件的lucene专门的全文检索工具确实不错。

浅谈网络搜索引擎的实现 知识管理系统网络搜索模块开发实践交流 功能需求 可自定义要搜索的网站列表(以下简称目标列表) 可对目标列表网站的网页内容进行检索 可对目标列表网站的网页内容进行自动分类处理 可自定义更新周期及一些相关性能参数 系统主要功能模块 网络蜘蛛 采集、解析并保存目标列表网站的内容(网页) 全文索引/检索 为目标列表网站内容建立索引 提供内容的全文检索 自动分类 对目标列表网站内容进行分类 基本流程 网络蜘蛛 功能概要 目标文档地址队列 w/r 目标文档(网页)获取 目标文档保存 文档解析并得到新的目标文档地址队列和文档正文内容 网络蜘蛛 当前版本的实现 多线程 Apache HttpClient Hsql HTML Parser 全文索引/搜索 什么是全文索引? 为了快速搜索大量的文本文件 为一本书建立关键词的索引“书签” 什么是全文搜索? 在索引中查找关键字的过程,找到关键字在哪些地方出现 全文索引/搜索 Lucene简介 高性能、可扩展的信息检索工具库 为应用程序添加索引/搜索功能 一个典型的应用: 全文索引/搜索 全文索引/搜索 Lucene索引过程的核心类 IndexWriter :提供对索引的写入操作 Directory:描述了索引存放的位置 Analyzer:对文本进行分析,提取词汇(token),剔除无用的信息 Document:虚拟的文档 Field:每个Document包含一个或多个不同命名的Field,每个Field对应一段数据,这些数据在搜索过程中可能会被查询或在索引中被检索 全文索引/搜索 Lucene索引代码示例: Directory dir = FSDirectory.getDirectory(indexDir); Analyzer anlyzer = new SimpleAnalyzer(); IndexWriter writer = new IndexWriter(dir, analyzer, true); Document doc = new Document(); doc.add(Field.Keyword(“id”, “1000”); doc.add(Field.UnIndexed(“name”, “Yao Ming”); doc.add(Field.UnStored(“intro”, “Yao Ming is a player of Houseton Rockets.”); writer.addDocument(doc); writer.close(); 全文索引/搜索 Lucene搜索过程的核心类 IndexSearcher:用于搜索IndexWriter创建的索引 Term:用于搜索的一个基本单元包括了一对字符串元素,与Field相对应 Query :抽象的查询类 TermQuery:最基本的查询类型,用来匹配特定Field中包含特定值的文档 Hits:存放有序搜索结果指针的简单容器 全文索引/搜索 Lucene搜索代码示例: IndexSearcher searcher = new IndexSearcher(directory); Term t = new Term(“intro”, “Yao”); Query query = new TermQuery(t); Hits hits = searcher.search(query); assertEquals(“JUnit test”, 1, hits.length()); Lucene的线程安全性 不允许使用多个IndexWriter或IndexReader实例同时对一个索引进行修改 IndexWriter和IndexReader是线程安全的,可以被多线程共享 全文索引/搜索 中文分词器 最大匹配法(机械分词):按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功。 二元分词 一元分词 自动分类 向量距离分类算法 根据算术平均,为每类文本集生成一个代表该类的特征向量 提取待分类文本的特征向量 计算该向量与每类特征向量之间的相似度 判定文本属于与文本距离最近相似度最大的类别 自动分类 相似度计算公式: 系统基础类图 Road map 自动分类学习 中文分词算法改进 支持多种格式的文档(doc, pdf…) 海量网站搜索的支持(分布式处理) 系统框架的优化和迭代改进
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值