Ads by Lake Quincy Media

eaglet

本博专注于基于微软技术的搜索相关技术
posts - 175, comments - 2982, trackbacks - 26, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

Lucene

摘要: Hubble.net 是一个基于.net framework 的开源免费的全文搜索数据库组件。开源协议是 Apache 2.0。Hubble.net 提供了基于SQL的全文检索接口,使用者只需会操作SQL,就可以很快学会使用Hubble.net进行全文检索。Hubble.net 可以实现全文索引和查询、多域检索和排序、分组统计、消重、分类、聚类、多表关联查询等等一系列全文检索和数据挖掘功能。Hubble.net 提供开放的数据库适配器接口,可以和各种数据库完美整合,为各种数据库系统附加全文检索和数据挖掘功能。Hubble.net 设计了较为完善的并发控制程序,数据的增删改查可以多线程同时并发进行,没有任何冲突。Hubble.net 还进行了缓存和内存管理设计,可以帮助用户最大限度的提高查询的效率。Hubble.net 力争在未来的几年内超过Lucene.net成为.net开发环境中最受欢迎的全文检索组件。阅读全文

posted @ 2009-12-15 09:44 eaglet 阅读(5830) | 评论 (49) 编辑 |

摘要: 这是一篇公司的内部培训教材,其中中的内容涵盖LUCENE的方方面面,从源代码角度深入剖析LUCENE,如果要对LUCENE有更加深入的了解(专家级别),这篇技术文档必不可少。 前提:对LUCENE有一定程度的了解,否则会让你云里雾里阅读全文

posted @ 2009-02-16 14:53 eaglet 阅读(3607) | 评论 (3) 编辑 |

摘要: 如何给文档评分阅读全文

posted @ 2009-02-16 14:45 eaglet 阅读(1222) | 评论 (0) 编辑 |

摘要: 文档内容是如何分析的阅读全文

posted @ 2009-02-16 14:37 eaglet 阅读(1291) | 评论 (0) 编辑 |

摘要: 5 索引是如何存储的阅读全文

posted @ 2009-02-16 14:33 eaglet 阅读(1080) | 评论 (0) 编辑 |

摘要: 4.3 索引创建过程 文档的索引过程是通过DocumentsWriter的内部数据处理链完成的,DocumentsWriter可以实现同时添加多个文档并将它们写入一个临时的segment中,完成后再由IndexWriter和SegmentMerger合并到统一的segment中去。DocumentsWriter支持多线程处理,即多个线程同时添加文档,它会为每个请求分配一个DocumentsWriterThreadState对象来监控此处理过程。处理时通过DocumentsWriter初始化时建立的DocFieldProcessor管理的索引处理链来完成的,依次处理为DocFieldConsumers、DocInverter、TermsHash、FreqProxTermsWriter、TermVectorsTermsWriter、NormsWriter以及StoredFieldsWriter等。 阅读全文

posted @ 2009-02-16 14:27 eaglet 阅读(1068) | 评论 (1) 编辑 |

摘要: 4 索引是如何创建的 为了使用Lucene来索引数据,首先你比把它转换成一个纯文本(plain-text)tokens的数据流(stream),并通过它创建出Document对象,其包含的Fields成员容纳这些文本数据。一旦你准备好些Document对象,你就可以调用IndexWriter类的addDocument(Document)方法来传递这些对象到Lucene并写入索引中。当你做这些的时候,Lucene首先分析(analyzer)这些数据来使得它们更适合索引。详见《Lucene In Action》阅读全文

posted @ 2009-02-16 14:23 eaglet 阅读(1371) | 评论 (0) 编辑 |

摘要: 3.3.6 Term向量文件 Term向量(vector)的支持是field基本组成中对一个field来说的可选项,它包含如下4种文件: 阅读全文

posted @ 2009-02-16 14:00 eaglet 阅读(779) | 评论 (0) 编辑 |

摘要: 3.3.3 Term频率数据(.frq) Term频率数据文件(.frq文件)存储容纳了每一个term的文档列表,以及该term出现在该文档中的频率(出现次数frequency,如果omitTf设置为fals时才存储)。阅读全文

posted @ 2009-02-13 14:56 eaglet 阅读(1252) | 评论 (0) 编辑 |

摘要: 3.3 每个Segment包含的文件阅读全文

posted @ 2009-02-13 14:49 eaglet 阅读(1020) | 评论 (0) 编辑 |

摘要: Lucene使用文件扩展名标识不同的索引文件,文件名标识不同版本或者代(generation)的索引片段(segment)。如.fnm文件存储域Fields名称及其属性,.fdt存储文档各项域数据,.fdx存储文档在fdt中的偏移位置即其索引文件,.frq存储文档中term位置数据,.tii文件存储term字典,.tis文件存储term频率数据,.prx存储term接近度数据,.nrm存储调节因子数据,另外segments_X文件存储当前最新索引片段的信息,其中X为其最新修改版本,segments.gen存储当前版本即X值,这些文件的详细介绍上节已说过了。阅读全文

posted @ 2009-02-13 14:37 eaglet 阅读(1781) | 评论 (0) 编辑 |

摘要: 为了使用Lucene来索引数据,首先你得把它转换成一个纯文本(plain-text)tokens的数据流(stream),并通过它创建出Document对象,其包含的Fields成员容纳这些文本数据。一旦你准备好些Document对象,你就可以调用IndexWriter类的addDocument(Document)方法来传递这些对象到Lucene并写入索引中。当你做这些的时候,Lucene首先分析(analyzer)这些数据来使得它们更适合索引。详见《Lucene In Action》阅读全文

posted @ 2009-02-13 14:28 eaglet 阅读(1857) | 评论 (2) 编辑 |

摘要: Apache Lucene是一个高性能(high-performance)的全能的全文检索(full-featured text search engine)的搜索引擎框架库,完全(entirely)使用Java开发。它是一种技术(technology),适合于(suitable for)几乎(nearly)任何一种需要全文检索(full-text search)的应用,特别是跨平台(cross-platform)的应用。阅读全文

posted @ 2009-02-13 14:05 eaglet 阅读(2658) | 评论 (0) 编辑 |

摘要: 今天在阅读LingWay (一个做垂直的语义搜索引擎)的CTO Cedric Champeau 先生的博客是发现有一篇题为:Why lucene isn't that good 为什么Lucene并不是想象的那么棒 的文章:Champeau 开门见山指出了Lucene的6大不足之处,鉴于 Lingway 公司使用Lucene已有好几年的历史,我相信Cedric Champeau的对Lucene的评论还是值得一读。阅读全文

posted @ 2008-11-24 07:35 eaglet 阅读(2277) | 评论 (7) 编辑 |

摘要: 1.4.2 版本是 1.4 正式版,该版本修改了 1.4.1 版本的一下错误。阅读全文

posted @ 2008-11-17 13:54 eaglet 阅读(2555) | 评论 (55) 编辑 |

摘要: 很多文章提到 Lucene.Net RangeQuery 的查询效率非常低下,我今天测试了一下,果然非常低下,而且结果也不正确。阅读全文

posted @ 2008-11-03 12:07 eaglet 阅读(1191) | 评论 (7) 编辑 |

摘要: Hubble.Net 全文数据库开源项目是一个建立在 .net 框架基础上的由中国程序员主导的全文数据检索开源项目。项目旨在为全文检索开发者或用户提供一个简单易用、高性能、高可用性的全文数据库中间件。Hubble.Net的骨干版本提供最基本的全文检索接口和界面,并被设计为高度可扩展的系统架构,以吸引众多的开发者参与进系统扩展功能的研发和推广,最终形成一套较为完整的全文检索解决方案。阅读全文

posted @ 2008-10-28 09:09 eaglet 阅读(3952) | 评论 (38) 编辑 |

摘要: KTDictSeg 1.4.01 版本经过一段时间的紧张开发,今天正式发布。感谢这段时间一直关心这个项目的朋友们。希望我的工作能给大家带来快乐。 阅读全文

posted @ 2008-10-10 07:56 eaglet 阅读(4502) | 评论 (66) 编辑 |

摘要: 盘古分词开发了多元分词算法,其与lucene.net 配合构建全文搜索,经测试准确度接近google和baidu的水平。现将一些实现方法和测试结果公布出来,供关心分词和搜索技术的朋友们参考。阅读全文

posted @ 2008-10-02 16:34 eaglet 阅读(7300) | 评论 (26) 编辑 |

摘要: 最近我的博客中有两位网友在使用 KTDictSeg 1.3 + lucene.net 2.0 + HighLight.net 2.0 是出现问题,高度怀疑是HighLight.net 2.0 版本的Bug, 今天腾出时间把几个组件的源码全部下下来,调试了一把,终于找到了这个Bug,下面把Bug的具体原因和修改后的源码发上来,供大家参考。另外哪位网友 知道如何向 lucene apache 组织 申报Bug,麻烦告知一声,以便我将这个Bug提交给该组织,让它的后续版本可以改进这个错误。阅读全文

posted @ 2008-07-09 09:22 eaglet 阅读(1986) | 评论 (11) 编辑 |

摘要: HighLight.net 是Lucene.net 带的一个开源高亮显示的组件,这个组件 2.0 版本以上的源码在网上很难找到,而这个组件
感觉又存在一些bug,遇到问题想调试一下,又没有源码,实在让人抓狂。
今天用最土的方法,一个一个文件下载,总是把这个版本的源码给凑齐了,编译了一下,没有问题,发上来,方便大家调试,
大家如果发现这里面有什么bug,还望多多分享。阅读全文

posted @ 2008-07-07 11:10 eaglet 阅读(2423) | 评论 (19) 编辑 |

摘要: 目前互联网上关于Lucene 及 Lucene.net 的文章很多,看了一些,感觉绝大部分还是偏向于应用,真正深入探讨其核心算法的文章不是太多,最近打算深入研究一下Lucene.net,把一些关键技术点的核心算法搞清楚。在开始做这个工作之前,先对目前互联网上可以利用的资源做个汇总,算是抛砖引玉吧,还望网友们多来补充,大家共同学习! 阅读全文

posted @ 2008-07-03 21:29 eaglet 阅读(3512) | 评论 (14) 编辑 |

摘要: 公布1.3版本的所有改动和下载位置 阅读全文

posted @ 2008-05-29 08:27 eaglet 阅读(8215) | 评论 (130) 编辑 |

摘要: 中文姓名识别和未登录词识别是中文分词中的难点,具体为什么是难点,很多文章都有叙述,这里不再多讲。主要介绍一下 1.3版本是如何对中文姓名和未登录词进行识别的。阅读全文

posted @ 2008-05-28 15:18 eaglet 阅读(2370) | 评论 (12) 编辑 |

摘要: KTDictSeg 分词组件1.3版本已经接近完成,只剩下最后的一点功能。在KTDictSeg 分词组件1.3版本的开发过程中,得到了很多朋友的关注和支持,特别是一些分词方面的专家提出了很多很好的意见,也对我的分词算法给出了很多中肯的建议,在此向他们表示由衷的感谢。1.3版本的预分词算法还是沿用了之前版本的变相的最大匹配算法,这个算法有着本质的缺陷,未来的2.0版本可能会使用目前比较先进的算法替代这个过时的算法。 1.3版本在预分词中增加了对英文专业词汇的支持,比如C++,C#原来无法被分出来,现在只要在词库中有就可以分出来。在预分词中1.3版本还增加了对词频的判断。在预分词后,1.3版本对中文姓名匹配,未登录词识别等进行了一些改进。另外1.3版本还增加了对lucene.net的支持以及字典管理功能。之前很多朋友建议将ArrayList全部改成了List<>,非常好的建议,1.3版本将原来代码中所有的ArrayList全部改成了List<>. 从今天开始,我打算逐步公布新版本中的一些主要算法,供朋友们参考,由于我水平有限,很多算法难尽如人意,有不对的地方还望指正。 阅读全文

posted @ 2008-05-27 15:07 eaglet 阅读(2768) | 评论 (32) 编辑 |

摘要: 在数据挖掘的研究中,我们往往需要判断文章是否雷同,对类似文章或短句进行归类处理等,这其中就会遇到这样的问题:如何确定两个字符串之间的相似程度。 本文综合作者的实际工作经验和数据挖掘理论,结合中文字符串特性介绍一套相对完整的方法,以解决上述问题.。阅读全文

posted @ 2007-08-14 09:59 eaglet 阅读(2747) | 评论 (4) 编辑 |

摘要: 经过一周的工作,完成了KTDictSeg 1.2 版本的开发,该版本多词库进行的初步整理,并增加了如下功能 1、 增加中文人名判断 2、 增加了正向匹配分词和反向匹配分词的选项 3、 增加了停用词过滤 4、 增加了词性标注 阅读全文

posted @ 2007-06-02 17:54 eaglet 阅读(5723) | 评论 (60) 编辑 |

摘要: 这段时间通过研究目前在互联网上可以搜索到的中文分词算法,感觉很难找到既快又准的分词方法,通过几天时间的研究,我终于找到了一种快速且较准确的中文分词方法。现在回过头来想想,觉得其实问题并不很复杂,对于一般应用,我觉得这个算法应该基本够用了,当然目前没有一种方法可以达到100%的分词准确度,这个算法也是一样。对于实际应用往往需要在效率和准确度上做个折中,当然对技术的追求是无止境的,我也将继续努力,争取在后续版本中进一步提高准确度,并维持现有效率。 阅读全文

posted @ 2007-05-24 18:14 eaglet 阅读(16341) | 评论 (85) 编辑 |