Lucene.Net 2.3.1开发介绍 —— 一、接触Lucene.Net

lucene.net基本应用(doc) lucene.net基本应用(doc) lucene.net基本应用(doc) lucene.net基本应用(doc) 立即下载

1、引用Lucene.Net类库

找到Lucene.Net的源代码,在“C#/src/Lucene.Net”目录。打开Visual Studio,我的版本是2008,而Lucene.Net默认的是2005。先创建一个项目,简单起见,创建一个C#控制台程序。

1_vs_create.jpg
图 1.1

然后添加Lucene.Net进项目,如图 1.2 - 1.3。

1_vs_2.jpg
图 1.2

1_vs_3.jpg
图 1.3

这个过程要进行一个VS2005到2008的转换。添加后,解决方案就有Lucene.Net项目了,如图1.4。

1_vs_4.jpg
图 1.4

然后把Lucene.Net引入TestLucene项目。如图1.5 -1.6:

1_vs_5.jpg
图1.5

1_vs_6.jpg
图1.6

点确定后就可以了。这时候,就可以在TestLucene项目中使用Lucene.Net的API了。

2、简单示例
对Lucene.Net的操作分为建立索引,和搜索两部分。

2.1 建立索引

通过代码 2.1.1,就可以简单地建立一个索引了。代码 2.1.1将在应用程序目录下建立一个IndexDirectory目录,并在目录下创建索引文件。

代码 2.1.1

 


 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5
 6namespace TestLucene
 7{
 8    using Lucene.Net.Index;
 9    using Lucene.Net.Store;
10    using Lucene.Net.Analysis;
11    using Lucene.Net.Analysis.Standard;
12    using Lucene.Net.Documents;
13
14    class Program
15    {
16        static void Main(string[] args)
17        {
18            Analyzer analyzer = new StandardAnalyzer();
19            IndexWriter writer = new IndexWriter("IndexDirectory", analyzer, true);
20            AddDocument(writer, "SQL Server 2008 的发布", "SQL Server 2008 的新特性");
21            AddDocument(writer, "ASP.Net MVC框架配置与分析", "而今,微软推出了新的MVC开发框架,也就是Microsoft ASP.NET 3.5 Extensions");
22            writer.Optimize();
23            writer.Close();
24        }

25
26        static void AddDocument(IndexWriter writer, string title, string content)
27        {
28            Document document = new Document();
29            document.Add(new Field("title", title, Field.Store.YES, Field.Index.TOKENIZED));
30            document.Add(new Field("content", content, Field.Store.YES, Field.Index.TOKENIZED));
31            writer.AddDocument(document);
32        }

33    }

34}

35

 

2.2 搜索索引

代码2.2.1就可以搜索刚才建立的索引。

 

代码 2.2.1

 


 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4
 5
 6namespace TestLucene
 7{
 8    using Lucene.Net.Index;
 9    using Lucene.Net.Store;
10    using Lucene.Net.Analysis;
11    using Lucene.Net.Analysis.Standard;
12    using Lucene.Net.Documents;
13    using Lucene.Net.Search;
14    using Lucene.Net.QueryParsers;
15
16    class Program
17    {
18        static void Main(string[] args)
19        {
20            Analyzer analyzer = new StandardAnalyzer();
21            //IndexWriter writer = new IndexWriter("IndexDirectory", analyzer, true);
22            //AddDocument(writer, "SQL Server 2008 的发布", "SQL Server 2008 的新特性");
23            //AddDocument(writer, "ASP.Net MVC框架配置与分析", "而今,微软推出了新的MVC开发框架,也就是Microsoft ASP.NET 3.5 Extensions");
24            //writer.Optimize();
25            //writer.Close();
26
27            IndexSearcher searcher = new IndexSearcher("IndexDirectory");
28            MultiFieldQueryParser parser = new MultiFieldQueryParser(new string[] { "title", "content" }, analyzer);
29            Query query = parser.Parse("sql");
30            Hits hits = searcher.Search(query);
31
32            for (int i = 0; i < hits.Length(); i++)
33            {
34                Document doc = hits.Doc(i);
35                Console.WriteLine(string.Format("title:{0} content:{1}", doc.Get("title"), doc.Get("content")));
36            }

37            searcher.Close();
38
39            Console.ReadKey();
40        }

41
42        //static void AddDocument(IndexWriter writer, string title, string content)
43        //{
44        //    Document document = new Document();
45        //    document.Add(new Field("title", title, Field.Store.YES, Field.Index.TOKENIZED));
46        //    document.Add(new Field("content", content, Field.Store.YES, Field.Index.TOKENIZED));
47        //    writer.AddDocument(document);
48        //}
49    }

50}

51

 

运行后输出:

 

title:SQL Server 2008 的发布 content:SQL Server 2008 的新特性

 

2.3 疑问

2.1,2.2小节介绍了最简单的建立和搜索索引的方式。虽然代码很短,使用也很简单,但是理解起来却不是太容易。

代码 2.1.1中,先是建立了一个分词器。什么是分词器?为什么要有分词器?分词器是怎么工作的?这些问题真让人头疼。接着建立一个IndexWriter的实例,这个类是负责创建索引的,有很多构造函数,这里使用的是其中的一个。三个参数分别是:索引建立到哪个目录,用什么分词器,还有就是是否创建。如果是否创建为false,那么就是以增量的方式来创建。再下来调用了AddDocument方法,在AddDocument方法中,先组织一个Docuement对象,然后把这个对象交给IndexWriter。然后再调用Optimize优化索引,最后关闭创建过程。这里面又有什么是Document,Document是怎么往存储器里写入的?Optimize方法能干什么?问题真多。

 

代码2.2.1则相对简单,先是创建IndexSearcher对象实例,并指定其搜索的目录,然后构造了一个查询Query,然后查出Hits,这样就得到想要的结果了。但是这个查询的过程是什么样的呢?这个Query代表什么?Hits是怎么得出来的?结果的顺序是怎么决定的?这些又是留下来的问题。

 

这么多问题,不能一次说完,欲知后事如何,下面一一道来。

C#调用Lucene方法-实现快速搜索 立即下载

相关推荐

C# ASP.NET - Lucene.NET技术实现搜索引擎范例

说明:使用Lucene.NET技术实现搜索引擎范例 使用到的DLL插件包括: DictSeg.dll - 1.0.1.0 FredCK.FCKeditorV2.dll - 2.6.3.22451 FreeTextBox.dll - 3.3.1.12354 FTAlgorithm.dll - 1.0.1.0 Lucene.Net.dll - 1.9.1.4

DotLucene源码浅读笔记(2) : Lucene.Net.Documents

这个写的比较抱歉,因为已经开始阅读Index部分了,Documents这个部分很早之前写了,但觉得没什么价值没发表,荒芜了一段时间,现在又开始了.这篇仅仅为了系列的完整.也发表了吧,大家随便仍鸡蛋吧 :).这个命名空间的类相对较少,也相对较简单,一共才四个类,主要的类是Document,Field, 在DotLucene中,可以这样认为,Document就是一种类似于数据库中的数据列的数据结构,...

weixin_34004576的博客 137

利用Lucene.NET建立SQL数据库记录索引文件程序C#源代码(包含数据库结构)

对初学使用dotlucent作站内检索的比较有帮助。 利用dotlucene为网站做的索引文件的应用程序。 数据库源是SQL Server,项目是用VS.NET2008开发的。 应用程序界面可以配置数据库链接,生成报告,定时执行增量索引,对单条索引进行更新操作。

Lucene.Net 使用教程

最近公司开发一个知识库系统,毫无疑问需要用到站内搜索的功能。最终选用Lucene.Net,现将项目中的一些收获和核心代码整理如下: 1. Lucene.Net是什么以及工作原理? Lucene.Net只是一个全文检索开发包,不是一个成型的搜索引擎,它的功能就是:把数据扔给Lucene.Net ,查询数据的时候从Lucene.Net 查询数据,可以看做是提供了全文检索功能的一个数...

weixin_30896825的博客 308

lucene.net 2.0.4

lucene.net 2.9.4 一个非常好的开源的搜索引擎框架

手把手教你用示波器搞定PCIe 5.0 REFCLK时钟信号测量(附完整参数解读)

本文详细介绍了如何使用示波器进行PCIe 5.0 REFCLK时钟信号测量,包括示波器与探头的选择、关键参数的测量方法及解读,以及实战中的常见问题与解决方案。通过手把手教学和完整参数解读,帮助硬件工程师高效完成时钟信号测量,确保系统稳定性。

weixin_28704565的博客 359

用lucene.net根据关键字检索本地word文档

目前在做一个winform小软件,其中有一个功能是能根据关键字检索本地保存的word文档。第一次是用com读取word方式(见上一篇文章),先遍历文件夹下的word文档,读取每个文档时循环关键字查找,结果可想而知效率很慢。检索结果是一条接一条显示出来的o(>_<)o ~~。连菜鸟级别的自己看到这效率都觉得很无语。然后想到计算机的本地搜索及google,百度搜索引擎,它们能做到在海量文件...

weixin_30580341的博客 290

实战指南:基于华为Ascend NPU的大模型W8A8量化调优与精度提升

本文提供了一份基于华为Ascend NPU进行大模型W8A8量化的实战调优指南。详细介绍了从环境搭建、使用msmodelslim框架进行基础量化,到通过离群值抑制、校准集优化和量化回退等关键技术提升精度的全流程。旨在帮助开发者在华为NPU硬件上实现模型推理的显著加速,同时有效控制精度损失。

weixin_29227425的博客 271

Lucene.Net入门教程示例

本人看到这篇非常不错的Lucene.Net入门基础教程,就转载分享一下给大家来学习,希望大家在工作实践中可以用到。 一.简单的例子 //索引Private void Index(){    IndexWriter writer = new IndexWriter(@"E:\Index", new StandardAnalyzer());    Document doc = new Docume...

weixin_34250709的博客 231

子图同构之乌尔曼算法Ullmann Algorithm的python实现

给定两个图Ga​(子图)和Gb​(原图),其中Ga​有pa​个点和qa​条边,Gb​有pb​个点和qb​条边,其邻接矩阵分别为A和B。子图同构的关键在于找到一种从Ga​的点到Gb​的点的映射MM是一个pa​行pb​列的矩阵,且满足每行只有一个1(表示Ga​中的一个点唯一地映射到Gb​中的一个点),每列至多一个1(确保Gb​中的点不会被重复映射)。定义Ccij​MMBT,若在图Ga​。

weixin_42822813的博客 1974

从原理到落地:Java+TensorRT打造YOLO模型GPU极致推理方案

Java+TensorRT的YOLO模型GPU加速方案,核心是通过JNI桥接实现Java与TensorRT的高效交互,结合TensorRT的底层优化能力,最大化GPU算力。该方案既保留了Java后端的工程化优势(如易维护、生态完善),又解决了AI模型推理的性能瓶颈,可落地于实时视频分析、智能监控、工业质检等场景。基于TensorRT Dynamic Shape实现多尺寸输入的自适应优化;结合Java的协程(Virtual Thread)提升异步推理的并发效率;

2601_94871597的博客 766

Lucene.Net 开发介绍 —— (一)、接触Lucene.Net

 1、引用Lucene.Net类库找到Lucene.Net的源代码,在“C#/src/Lucene.Net”目录。打开Visual Studio,我的版本是2008,而Lucene.Net默认的是2005。先创建一个项目,简单起见,创建一个C#控制台程序。图 1.1然后添加Lucene.Net进项目,如图 1.2 - 1.3。图 1.2图 1.3这个过程要进行一个VS2005到2008的转换。添加

我思故我在 我有我精彩 2869

通过轻量级图像增强Transformer (IAT) 提升YOLOv8在低光环境下的检测性能

随着深度学习和计算机视觉的快速发展,目标检测模型在各个领域中的应用不断扩展,特别是在低照度环境下的视觉任务。YOLOv8作为当前最先进的目标检测模型之一,在高亮度和良好照明条件下表现出色,但在低照度环境下的性能存在一定的不足。为了解决这一问题,我们提出了一种轻量级的低照度图像增强网络(IAT)来改进YOLOv8的暗光检测能力。本篇文章将深入探讨这一创新改进,并附带代码实现,帮助大家更好地理解这一技术的应用和效果。

博客 1214

Lucene.Net 2.3.1开发介绍 —— 阅读索引

Lucene.Net 2.3.1开发介绍 —— 阅读索引 Lucene.Net 2.3.1开发介绍 —— 简介 Lucene.Net 2.3.1开发介绍 —— 一、接触Lucene.Net Lucene.Net 2.3.1开发介绍 —— 二、分词(一

学习,工作以及生活 637

Qt之自定义QToolTip,去掉显示动画和隐藏延时

先来看看Qt原生QToolTip的缺点:1.当提示内容无变化时,弹窗无法移动。只能先传个空字符串强制弹窗隐藏,然后在新位置再传个字符串。2.默认显示10多秒才消失,当然这个时间是可以设置的,但是如果我想一直显示呢?总不能设置一个超级大的时间吧。3.鼠标移出控件后(调用QToolTip::showText时传入了控件指针)默认300毫秒弹窗才隐藏。而且这个时间没法设置,如果想立即隐藏就没办法了。

草上爬的博客 4268

视源CVTE嵌入式面试题及参考答案(200+面试题,17万字)

内核模块如何设置? 内核模块是可在运行时动态加载到内核或从内核卸载的代码块。以下是设置内核模块的步骤: 首先,编写内核模块代码。通常使用 C 语言编写,包含必要的头文件,如<linux/init.h>、<linux/module.h>等。在代码中,需要定义模块的初始化函数和清理函数。初始化函数在模块加载时被调用,用于进行模块的初始化工作,如注册设备、分配资源等。清理函数在模块卸载时被调用,用于释放资源、注销设备等。 例如: #include <li

大模型大数据攻城狮的专栏 2204
上一篇: Lucene.Net 2.3.1开发介绍——附录一、如何下载Lucene.Net的各种版本
下一篇: Lucene.Net 2.3.1开发介绍 —— 阅读索引
Caesar525
博客等级 码龄19年 11粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值