文章分类 - Lucene.Net
摘要:这几天看demo完成了一个简单的索引+搜索。网上大多数是dotLucene.net 的例子,而Lucene.Net 2.0 的很少,其实连 http://www.dotlucene.net/ 都关掉了,由于刚刚接触Lucene.net ,网上很多人说 Lucene.Net 从 2.0 开始就开始收费,其实,现在Lucene.net 又开始免费了。Lucene.net 现在成为apache 的开源项...
阅读全文
摘要:本文仅记录一些简单的使用方法,供初学者参考。以下例子采用 Lucene.NET 1.9 版本,可取去 Lucene.Net 下载。1. 基本应用using System;using System.Collections.Generic;using System.Text;using Lucene.Net;using Lucene.Net.Analysis;using Lucene.Net.Anal...
阅读全文
摘要:一、Lucene点滴 (发音为['lusen]),我经常就读鹿神,是头活蹦乱跳的好鹿,研究它吧,保证感觉它很神!Lucene是一个非常优秀的开源的全文搜索引擎,我们可以在它的上面开发出各种全文搜索的应用来。Lucene在国外有很高的知名度,现在已经是Apache的顶级项目。二、倒排索引原理简述 Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。具体解释算法理论就不...
阅读全文
摘要:删除 (软删除,仅添加了删除标记。调用IndexWriter.Optimize() 后真正删除)IndexReader reader = IndexReader.Open(directory);// 删除指定序号(DocId)的 Document。reader.Delete(123);// 删除包含指定 Term 的 Document。reader.Delete(new Term(FieldVal...
阅读全文
摘要:Lucene.net是目前在.net环境中被普遍使用的全文索引的开源项目,这次在项目的开发中也使用它进行全文索引。在开发过程中碰到一些小问题就是对多字段和多索引目录进行搜索。1、多字段搜索就是同时要一个以上的字段中的内容进行比较搜索,类似概念在SQL中就是select * from Table where a like '%query%' or b like '%query%'。Lucene.ne...
阅读全文
摘要:以下例子采用 Lucene.NET 1.9 版本,可取去 Lucene.Net 下载。1. 基本应用[代码]除了 RAMDirectory,还可以使用 FSDirectory。(注意 FSDirectory.GetDirectory 的 create 参数,为 true 时将删除已有索引库文件,可以通过 IndexReader.IndexExists() 方法判断。) 从指定目录打开已有索引库。p...
阅读全文
摘要:第一、按词条搜索 - TermQuery[代码]这样就可以把 field 为 name 的所有包含 word1 的文档检索出来了。第二、“与或”搜索 - BooleanQuery 它实际是一个组合 query 看看下面的代码:[代码]其中的MUST、SHOULD、MUST_NOT表示与、或、非 ,从字面意思很容易理解Lucene 可以最多支持连续 1024 的 query ...
阅读全文
摘要:1, 有时对于一个Document来说,有一些Field会被频繁地操作,而另一些Field则不会。这时可以将频繁操作的Field和其他Field分开存放,而在搜索时同时检索这两部分Field而提取出一个完整的Document。 这要求两个索引包含的Document的数量必须相同。 在创建索引的时候,可以同时创建多个IndexWriter,将一个Document根据需要拆分成多个包含部分Field的...
阅读全文
摘要:在建立索引前,先了解下lucene中的一些与索引相关的重要类。为了对文档进行索引,Lucene 提供了五个基础的类,他们分别是 Document, Field, IndexWriter, Analyzer, Directory。下面我们分别介绍一下这五个类的用途:DocumentDocument 是用来描述文档的,这里的文档可以指一个 HTML 页面,一封电子邮件,或者是一个文本文件。一个 Doc...
阅读全文
摘要:当我们查询Lucene的一个索引时,Lucene会返回一个有序的Hits对象集合(collection)。Lucene使用默认的评分方式对该集合内的对象按照其得分高低进行排序。对于一个给定的查询,Lucene为每个文档计算一个评分(即一个表示相关性的数值)。Hits本身不是实际的匹配文档集,只是指向这些匹配文档的引用(reference)。在许多显示搜索结果的应用程序中,用户访问的只是最开始的一部...
阅读全文
摘要:有时对于一个Document来说,有一些Field会被频繁地操作,而另一些Field则不会。这时可以将频繁操作的Field和其他Field分开存放,而在搜索时同时检索这两部分Field而提取出一个完整的Document。 这要求两个索引包含的Document的数量必须相同, 在创建索引的时候,可以同时创建多个IndexWriter,将一个Document根据需要拆分成多个包含部分Fie...
阅读全文
摘要:Lucene 支持多种形式的高级搜索,我们在这一部分中会进行探讨,然后我会使用 Lucene 的 API 来演示如何实现这些高级搜索功能。 布尔操作符 大多数的搜索引擎都会提供布尔操作符让用户可以组合查询,典型的布尔操作符有 AND, OR, NOT。Lucene 支持 5 种布尔操作符,分别是 AND, OR, NOT, 加(+), 减(-)。接下来我会讲述每个操作符的用法。 O...
阅读全文
摘要:Lucene支持对搜索条件的排序,一个条件或者多个条件,以及是升序还是降序,部分代码如下: string INDEX_STORE_PATH = Server.MapPath("index"); //INDEX_STORE_PATH 为索引存储目录 string keyword = TextBox2.Text; //搜索内容 ...
阅读全文
摘要:public void Test1() { //建立一个内存目录 Lucene.Net.Store.RAMDirectory ramDir = new Lucene.Net.Store.RAMDirectory(); //建立一个索引书写器 IndexWriter ramWriter = new IndexWriter(ramDir,new ChineseAnalyzer(), true)...
阅读全文
摘要:ktdictseg 源代码里面 使用的都是ArrayList 类型,想着如果修改成泛型是不是会提高分词速度呢,有了上面的想法就有了下面的行动 修改过后,经验证平均速度比原来提高了1000--2000 char/s 提供修改后的源代码,感谢肖波,同时期待肖波的新版本发布 /Files/suyuan/ktdictseg_xiugai.rar
阅读全文
摘要:在lucene搜索分页过程中,可以有两种方式 一种是将搜索结果集直接放到session中,但是假如结果集非常大,同时又存在大并发访问的时候,很可能造成服务器的内存不足,而使服务器宕机 还有一种是每次都重新进行搜索,这样虽然避免了内存溢出的可能,但是,每次搜索都要进行一次IO操作,如果大并发访问的时候,你要保证你的硬盘的转速足够的快,还要保证你的cpu有足够高的频率 而我们可以将这两种方式结合下,每...
阅读全文
摘要:最近在看Lucene.net 发现Lucene.net的中文分词资料不是很多,很早就在看肖波的KTDictSeg,觉的分词效果不错,但是没有lucene接口,看他的blog也是很长时间没有更新了 他在他的blog中提到将在下一个版本中提供对lucene的支持,我这里期待中...同时blog中提到一挥的修改版本,但是一挥的站打不开了,不知道什么原因,我刚刚看这个时间不长,查了些资料 写了下面的代码实...
阅读全文

浙公网安备 33010602011771号