文章分类 - Lucene.Net
文章分类 - Lucene.Net
摘要: 文章来源:http://www.cnblogs.com/crazybottle/p/3911291.html本章阅读概要1、Lucenne.Net简介2、介绍盘古分词器3、Lucene.Net实例分析4、结束语(Demo下载)Lucene.Net简介 Lucene.net是Lucene的.net移...阅读全文
摘要: 来源:http://www.cnblogs.com/FuzhePan/p/3874963.htmlLucene做站内搜索的时候经常会遇到实时搜索的应用场景,比如用户搜索的功能。实现实时搜索,最普通的做法是,添加新的document之后,调用 IndexWriter 的 Commit 方法把内存中的索...阅读全文
摘要: 目录一Lucene.Net概述二 分词三 索引四 搜索五 实践中的问题一Lucene.Net概述 Lucene.Net是一个C#开发的开源全文索引库,其源码包括“核心”与“外围”两部分。外围部分实现辅助功能,而核心部分包括:Lucene.Net.Index 提供索引管理,词组排序。Lucene.Net.Search 提供查询相关功能。Lucene.Net.Store 支持数据存储管理,主要包括I/O操作。Lucene.Net.Util 公共类。Lucene.Net.Documents 负责描述索引存储时的文件结构管理。Lucene.Net.QueryParsers 提供查询语法。Lucene.阅读全文
摘要: 计算两个字符串的差异距离函数 /// <summary> /// 计算两个字符串的差异距离 /// </summary> /// <param name="source">来源字符串</param> /// <param name="target">目标字符串</param> /// <returns>字符串差距</returns> public int CalcDistance(string source, string target) { ...阅读全文
摘要: 引用地址:http://www.cnblogs.com/Aimeast/archive/2011/09/05/2167844.html来源:.Net.NewLife。 需求:假设在某系统存储了许多地址,例如:“北京市海淀区中关村大街1号海龙大厦”。用户输入“北京 海龙大厦”即可查询到这条结果。另外还需要有容错设计,例如输入“广西 京岛风景区”能够搜索到"广西壮族自治区京岛风景名胜区"。最终的需求是:可以根据用户输入,匹配若干条近似结果共用户选择。 目的:避免用户输入类似地址导致数据出现重复项。例如,已经存在“北京市中关村”,就不应该再允许存在“北京中关村”。 举例: 此类技阅读全文
摘要: 在Lucene.net实现自定义排序,需要实现两个Lucene.Net.Search的两个接口:public interface SortComparatorSource{ ScoreDocComparator NewComparator(IndexReader reader , System.String fieldname) ;}public interface ScoreDocComparator{ int Compare(ScoreDoc i , ScoreDoc j) ; System.IComparable SortValue(ScoreDoc i) ; int SortType(阅读全文
摘要: 我们知道利用Lucene.Net的不同的Query(常见如BooleanQuery,RangeQuery等等),可以有针对性地进行各种不同类型的搜索。利用QueryParser(或MultiFieldQueryParser),配合构造好的搜索关键字(搜索表达式),也可以实现不同类型的搜索。本文重点就是简单介绍一下搜索表达式和不同类型的Query之间的简单对比。本文最后的demo,QueryApp工程下有文章里贴出的大部分示例代码,代码自己会说话,有时候它可能更好地表达了文章作者的思路。您可以下载对照着本文进行阅读。一、与或非1、与举例:搜索contents既包含“jeffreyzhao”,又有阅读全文
摘要: 用Lucene.Net的锁,可以理解为只读操作。它的Search方法是我们最常用的,该方法返回我们需要的结果。2、QueryParserQueryParser是Query的构造器,它的Parse方法会根据Analyzer构造一个合理的Query对象来应对搜索。 3、QueryQuery类作为查询表达式的载体同样至关重要,它有丰富的子类,让我们可以应对多种变化的搜索需求,简单来说,我们想到的常用搜索Lucene.Net几乎已经都给我们实现了,你只要分辨应该使用那个类来搜索比较合理。4、TopDocs(或者Hits)这个类我们可以简单把它理解成它就是我们要的搜索结果集,通过它我们可以知道记录集合中阅读全文
摘要: 项目中可能需要再次用到Lucene.Net,利用空闲时间写了个demo,主要涉及到索引的创建、删除、更新和一个简单查询。在本文示例中,Lucene.Net的版本是2.4.0,某些类和方法与最新版本或者较旧的版本有较多不同,希望您阅读顺利。一、简单认识索引Lucene.Net的应用相对比较简单。一段时间以来,我最多只是在项目中写点代码,利用一下它的类库而已,对很多名词术语不是很清晰,甚至理解可能还有偏差。从我过去的博客你也可以看出,语言表达一直不是个人所长,就算”表达“了也有大面积抄书的嫌疑,所以很多概念性的介绍能省则省(除非特别有别要说明),希望有心的初学者注意,理清概念和辨别技术名词非常重要阅读全文
摘要: 同义词检索应该很多时候会用得上的,举个简单的例子,我们搜索关键字 good 的时候,与 well 和 fine 等的词条也可能是你想要的结果。这里我们不自己建立同义词库,直接使用 WordNet 的同义词库,本篇介绍 C# 版的实现步骤,还会有续篇--Java 版。由于 Lucene 是发源于 Java,所以 C# 的应用者就没有 Java 的那么幸福了,Java 版已经有 3.0.2 可下载,C...阅读全文
摘要: 代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingLucene.Net.Index;usingLucene.Net.S...阅读全文
摘要: 1. 有时对于一个Document来说,有一些Field会被频繁地操作,而另一些Field则不会。这时可以将频繁操作的Field和其他Field分开存 放,而在搜索时同时检索这两部分Field而提取出一个完整的Document。 这要求两个索引包含的Document的数量必须相同。在创建索引的时候,可以同时创建多个IndexWriter,将一个Document根据需要拆分成多个包含部分Field的...阅读全文
摘要: 1. 基本应用using System;using System.Collections.Generic;using System.Text;using Lucene.Net;using Lucene.Net.Analysis;using Lucene.Net.Analysis.Standard;using Lucene.Net.Documents;using Lucene.Net.Index;u...阅读全文
摘要: 1. 基本应用using System;using System.Collections.Generic;using System.Text;using Lucene.Net;using Lucene.Net.Analysis;using Lucene.Net.Analysis.Standard;using Lucene.Net.Documents;using Lucene.Net.Index;u...阅读全文
摘要: 【++yong的博客地址:http://blog.csdn.net/qjyong】开源全文搜索工具包Lucene2.9.1的使用。1. 搭建Lucene的开发环境:在classpath中添加lucene-core-2.9.1.jar包 2. 全文搜索的两个工作: 建立索引文件,搜索索引. 3. Lucene的索引文件逻辑结构 1) 索引(Index)由若干块(片段)(Segment)组成 a...阅读全文
摘要: 1. 搭建Lucene的开发环境: 1) 在classpath中添加lucene-core-x.x.x.jar包 2. 全文搜索的两个工作 1) 建立索引文件: 2) 搜索索引: 3. Lucene的索引文件逻辑结构: 1) 索引(Index)由若干块(片段)(Segment)组成 ★2) 块由若干文档(Document)组成: 一个文件映射成一个文档。数据库表中的一条记录映射成一个文...阅读全文
摘要: 对于并发,Lucene.Net 遵循以下规则:1. 允许任意多的读操作并发,即任意数量用户可同时对同一索引做检索操作。2. 即便正在进行索引修改操作(索引优化、添加文档、删除文档),依然允许任意多的检索操作并发执行。3. 不允许并发修改操作,也就是说同一时间只允许一个索引修改操作。Lucene.Net 内部已经对多线程安全进行了处理,打开 IndexWrite.cs / IndexReade.cs...阅读全文
摘要: 实验一下面的代码中,我们使用两个线程来模拟并发的读写操作。运行该代码,我们会发现 IndexReader 并不能获得 Directory 的变更数据。private void Test1(){Directory directory = new RAMDirectory();Analyzer analyzer = new StandardAnalyzer();new Thread(delegate(...阅读全文
摘要: #region 建立索引public void CreateIndex() { DataSet ds = 取得数据库信息; //取得索引输出 IndexWriter writer = new IndexWriter(这个地方写保存路径, true); writer.SetMergeFactor(20); // 调整segment合并的频率和大小 //建立索引字段 if (ds.Tables[0]...阅读全文
摘要: 这几天看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)。在许多显示搜索结果的应用程序中,用户访问的只是最开始的一部...阅读全文
- 学习本是一个不断抄袭、模仿、练习、创新的过程。
- 虽然,园中已有本人无法超越的同主题博文,为什么还是要写。
- 对于自己,博文只是总结。在总结的过程发现问题,解决问题。
- 对于他人,在此过程如果还能附带帮助他人,那就再好不过了。
- 由于博主能力有限,文中可能存在描述不正确,欢迎指正、补充!
- 感谢您的阅读。如果文章对您有用,那么请轻轻点个赞,以资鼓励。
- 工控物联Q群:995475200