首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

火力全开——仿造Baidu简单实现基于Lucene.net的全文检索的功能

Lucene.Net Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,是一个Library.你也可以把它理解为一个将索引...,Lucene.net是把写入的文件用指定的分词器将文章分词(这样检索的时候才能查的快),然后将词放入索引文件。...): name表示字段名; value表示字段值; store表示是否存储value值,可选值 Field.Store.YES存储, Field.Store.NO不存储, Field.Store.COMPRESS...index表示如何创建索引,可选值Field.Index. NOT_ANALYZED ,不创建索引,Field.Index. ANALYZED,创建索引;创建索引的字段才可以比较好的检索。...是否碎尸万段!是否需要按照这个字段进行“全文检索”。 termVector表示如何保存索引词之间的距离。“北京欢迎你们大家”,索引中是如何保存“北京”和“大家”之间“隔多少单词”。

1.5K70

借助 Lucene.Net 构建站内搜索引擎(上)

最重要的是它会造成数据库全表扫描,效率低下,即使使用视图,也会造成数据库服务器"亚历山大"!因此,有必要了解一下Lucene.Net这个神器(也许现在早已不是)! 一、Lucene.Net简介 ?...Lucene.Net只是一个全文检索开发包,不是一个成型的搜索引擎。 它的功能就是负责将文本数据按照某种分词算法进行切词,分词后的结果存储在索引库中,从索引库检索数据的速度灰常快。   ...可以看到一元分词将这句话的每个字都作为一个词组。前面提到,Lucene.Net维护着一个索引库,如果每个字都作为一个词组,那么索引库会变得尤为巨大,当然,分词的算法很简单,因此分词效率上会很高。...indexPath), new NativeFSLockFactory()); bool isUpdate = IndexReader.IndexExists(directory); //判断索引库是否存在...Document document = new Document(); // 每个Document可以有自己的属性(字段),所有字段名都是自定义的,值都是

1.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Lucene.net(4.8.0) 学习问题记录三: 索引的创建 IndexWriter 和索引速度的优化

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移。.../tree/netcore2.0 Lucene.net 4.8.0 和之前的Lucene.net 3.6.0 改动还是相当多的,这里对自己开发过程遇到的问题,做一个记录吧,希望可以帮到和我一样需要升级Lucene.net...分词器 analyze .这里要注意,IndexWriter的分词器和IndexSearch的分词器应该是相同的,否则将会影响搜索结果。...我们知道,IndexWriter是当缓存中的容量达到一定的限制条件之后,才开始将缓存中的操作写入到硬盘中,事实上,如果我们把限制条件定的值越大,索引的速度是越快的。...所以当我们设置MergeFactor的值越大的时候,搜索的速度就会越快,而合并segement的速度则会降低,也即索引的速度会降低。 2. 索引文件的结构 ? 这是,一个索引目录下的索引文件。

    1.4K110

    Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考

    /tree/netcore2.0 Lucene.net 4.8.0 和之前的Lucene.net 3.6.0 改动还是相当多的,这里对自己开发过程遇到的问题,做一个记录吧,希望可以帮到和我一样需要升级Lucene.net...目录 Lucene.net(4.8.0) 学习问题记录一:分词器Analyzer的构造和内部成员ReuseStategy Lucene.net(4.8.0) 学习问题记录二: 分词器Analyzer中的...TokenStream和AttributeSource Lucene.net(4.8.0) 学习问题记录三: 索引的创建 IndexWriter 和索引速度的优化 Lucene.net(4.8.0) 学习问题记录四...但由于我做的是基于.net的搜索引擎,所以我只找到了IK分词器,PanGu分词器,JIEba分词器的.net core2.0 版本。...函数,因为Lucene正是通过这个函数获取分词器分词之后的TokenStream(一些列分词信息的集合)我们可以在这个函数中给tokenStream中注入我们想要得到的属性,在Lucene.net 4.8.0

    2.3K140

    借助 Lucene.Net 构建站内搜索引擎(下)

    前言:上一篇我们学习了Lucene.Net的基本概念、分词以及实现了一个最简单的搜索引擎,这一篇我们开始开发一个初具规模的站内搜索项目,通过开发站内搜索模块,我们可以方便地在项目中集成站内搜索功能。...这个folder下主要是对一些常用功能的封装,以便尽可能实现代码复用。当然,也对Lucene.Net的一些例如创建索引的操作进行了封装,保证代码的单一职责。   (3)Dict与Index ?   ...这两个folder下主要是存放Lucene.Net必须要用到的词库与索引文件,如果你还不熟悉,请浏览上一篇进行学习。...(字段),所有字段名都是自定义的,值都是string类型 // Field.Store.YES不仅要对文章进行分词记录,也要保存原文,就不用去数据库里查一次了...只不过任务的TaskType枚举不一样,通过此枚举标识,在更新索引时会进行判断是否需要删除原来的索引进行重建。

    1.4K10

    仿照博客园搜索功能 找找看的实现 发现问题 杂谈

    ,我们还需要指定其中的某些参数,让lucene.net在特定的计算机上工作最大化。...现在有一个问题出现了,我们不可能手动的去创建索引,所以我们要使用定时器去自动的创建索引,这就用到了Quartz.net定时器, 还有一个问题就是我们创建索引因为是自动创建,所以不需要界面显示,并且需要在后台运行...当然了,在程序运行过程中会遇到各种问题,需要我们记录成粗错误发生的位置以及时间,这就会用到log4net 日志管理框架。...对于Lucene.net如何创建索引以及查询,以及分词,我这里使用的分词插件是盘古分词,这些内容在前面的博客中我有说明过,不再赘述。...总结一下,log4net日志管理框架,可以输出日志到任何的介质,对log4net的配置文件的配置是重点。 Lucene.net可以用来实现创建索引,通过索引进行查询,实现全文检索的功能。

    26120

    Lucene.net(4.8.0) 学习问题记录一:分词器Analyzer的构造和内部成员ReuseStategy

    /tree/netcore2.0 Lucene.net 4.8.0 和之前的Lucene.net 3.6.0 改动还是相当多的,这里对自己开发过程遇到的问题,做一个记录吧,希望可以帮到和我一样需要升级Lucene.net...一,Lucene 分词器:Analyzer 这里就对Lucene的Analyzer做一个简单的阐述,以后会对Analyzer做一个更加详细的笔记:Lucene 中的Analyzer 是一个分词器,具体的作用呢就是将文本...类,这记录的是IndexWriter 的各种属性和配置,这里不做细究了。...IndexWriterConfig(Version matchVersion, Analyzer analyzer) 所以我们写入索引的时候,会用到Analyzer , 写入的索引是这样一个借口,索引的储存方式是...of an object 这个异常的意思是,引用了值为null的对象。

    89250

    Lucene.Net实现站内搜索功能

    Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。...开发人员可以基于Lucene.net实现全文检索的功能。 Lucene.net是Apache软件基金会赞助的开源项目,基于Apache License协议。...Lucene.net并不是一个爬行搜索引擎,也不会自动地索引内容。我们得先将要索引的文档中的文本抽取出来,然后再将其加到Lucene.net索引中。...该语句的作用:判断索引库文件夹是否存在以及索引特征文件是否存在。 if (isUpdate) { //同时只能有一段代码对索引库进行写操作。...//Field.Store.YES:表示是否存储原值。只有当Field.Store.YES在后面才能用doc.Get(“number”)取出值来.Field.Index.

    1K30

    4.1、苏宁百万级商品爬取 代码讲解 索引建立

    接下去我们进行索引建立,本项目索引建立我们使用Lucene.Net。在使用前我们介绍以下Lucene是什么! Lucene概述 Lucene是一款高性能的、可扩展的信息检索(IR)工具库。...文档主要包括几个带值的域,比如标题、正文、摘要、作者和链接。 ③文档分析 搜索引擎不能直接对文本进行索引:确切地说,必须将文本分割成一系列被称为语汇单元的独立的原子元素。...Lucene 的参考链接,想多了解的小伙伴可以点击 借助 Lucene.Net 构建站内搜索引擎 使用Lucene.Net实现全文检索 Lucene.Net+盘古分词器(详细介绍) 在阅读上述内容和文章链接后...本项目选用的分词组件是 盘古分词,采用Lucene.Net建立索引 索引建立是基于当前已经存在的20张表 ?...得到一个随机编码,这是索引存储的Lucene文件夹名称,判断编码是否存在,如果不存在加入编码list集合 对当前集合建立索引 将当前任务加入List集合,判断任务集合是否超出20上限,如果超出

    53530

    Lucene.net(4.8.0) 学习问题记录四: IndexWriter 索引的优化以及思考

    /tree/netcore2.0 Lucene.net 4.8.0 和之前的Lucene.net 3.6.0 改动还是相当多的,这里对自己开发过程遇到的问题,做一个记录吧,希望可以帮到和我一样需要升级Lucene.net...2.6 使用更快的分词器 事实上建索引的时间大部分都花在了分词的时间上,一个好的分词器,将大大减少索引的时间。...当然分布索引放在不同的服务器上,效率才是翻倍的。...由于公司只给我了一台服务器,所以我选择在这台服务器上跑了两个相同的应用在不同的文件夹分布建索引,再调用IndexWriter.Addindexes合并索引,虽然是在同一台服务器上,分两个应用确实可以最大的发挥...在上面的链接中,我发现了很多分词速度更快的分词器,比如JIEba分词器,Word分词器。但是并不适合选择那些快速分词模式的分词器,因为搜索引擎最重要的是搜索效果,而不是你后台建索引的速度。

    1.2K80

    lucene.net全文检索(一)相关概念及示例

    全文检索 全文检索是将对站内的网页、文档内容进行分词,然后形成索引,再通过关键词查询匹配索引库中的索引,从而得到索引结果,最后将索引页内容展现给用户。...Lucene.Net Lucene.net是Lucene的.net移植版本,用C#编写,它完成了全文检索的功能——预先把数据拆分成原子(字/词),保存到磁盘中;查询时把关键字也拆分成原子(字/词),再根据...Nuget安装“Lucene.Net”和“Lucene.Net.Analysis.PanGu”(盘古分词,一个第三方的分词器) lucene.net七大对象 1、Analysis 分词器,负责把字符串拆分成原子...2、Document 数据结构,定义存储数据的格式 3、Index:索引的读写类 4、QueryParser:查询解析器,负责解析查询语句 5、Search:负责各种查询类,命令解析后得到就是查询类...是否保存值 是否分词 doc.Add(new Field("title", commdity.Title, Field.Store.YES, Field.Index.ANALYZED

    30730

    国产开源基于.net实现的本地文档全文索引定位器,本地文本搜索神器

    本地文本搜索定位器 封面 软件介绍 基于.net实现的本地文档的全文索引定位器,根据关键词搜索定位本地文档内容。便于查找历史文档时节省时间,本地文档全文搜索神器! 软件架构 本地单机软件。...WPF实现的UI(RubyerUI组件) Lucene.Net实现的索引(Jieba.NET分词器) NetOffice、OpenXML、NPOI、Spire实现的文档内容解析 安装教程 运行环境基于....ne.freamwor.4.6.1(需要安装此环境才能运行) 发布版下载解压可用(或自己下载源码编译) 软件截图 使用说明 1.双击文件夹设置自己需要搜索的文件夹(和排除的文件夹...) 2.点击“重建”按钮创建文档索引,更新文档索引点击“优化”按钮(或等待更新任务自动更新) 3.索引结束后,搜索框输入关键词回车或者点击搜索按钮。....-.数据库表结构,数据,库表,结构;默认组合为OR(勾选匹配全词后条件组合AND) 手动分词:数据..结.-.数据库,表,结构(空格作为分隔符) 文件类型:筛选不同类型的文件 仅文件名:关键词不匹配文档内容

    57820

    Lucene.net(4.8.0) 学习问题记录二: 分词器Analyzer中的TokenStream和AttributeSource

    大家好,又见面了,我是你们的朋友全栈君。 前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移。...和之前的Lucene.net 3.6.0 改动还是相当多的,这里对自己开发过程遇到的问题,做一个记录吧,希望可以帮到和我一样需要升级Lucene.net的人。...调用分词器,首先会执行CreateComponents()函数,创建一个TokenStreamComponents,这也是为什么所有自定义,或者外部的分词器如果继承Analyzer,必须要覆写CreateComponents...而IncrementToken实际的作用则是在遍历TokenStream 中的Token,类似于一个迭代器。...二,问题:搜索不到内容   在迁移的过程中,突然出现了搜索不到内容的bug,经过调试,发现写索引的时候,对文本的分词都是正确。

    58520

    Lucene.net(4.8.0) 学习问题记录二: 分词器Analyzer中的TokenStream和AttributeSource

    前言:目前自己在做使用Lucene.net和PanGu分词实现全文检索的工作,不过自己是把别人做好的项目进行迁移。.../tree/netcore2.0 Lucene.net 4.8.0 和之前的Lucene.net 3.6.0 改动还是相当多的,这里对自己开发过程遇到的问题,做一个记录吧,希望可以帮到和我一样需要升级Lucene.net...调用分词器,首先会执行CreateComponents()函数,创建一个TokenStreamComponents,这也是为什么所有自定义,或者外部的分词器如果继承Analyzer,必须要覆写CreateComponents...而IncrementToken实际的作用则是在遍历TokenStream 中的Token,类似于一个迭代器。...二,问题:搜索不到内容   在迁移的过程中,突然出现了搜索不到内容的bug,经过调试,发现写索引的时候,对文本的分词都是正确。

    1.1K70

    Lucene.net 的性能探究--Lucene.net 的并发处理能力到底有多强?

    这篇博客并不是证明Lucene.net的性能有多强悍,实际上Lucene.net的并发能力并不让人很满意,这得看你怎么用它。...接下来先讨论下Lucene.net 的搜索速度: 在讨论搜索速度之前,我们可以简单了解一下Lucene是怎么搜索的,涉及到Lucene的search最重要的几个类: 表面上: 1....Directory类是Lucene操作索引目录的类,负责管理目录里的索引文件。...构造Query  Lucene 的提供了很多Query方式,比如TermQuery 查询文档中某个term是否存在,PhraseQuery 查询文档中两个或多个词是否存在和设定他们之间的距离, FuzzyQuery...现在的这个搜索流程就像一个轮子,我们改怎么去用最好的搭配,来达到最快的搜索速度呢?如果你的搜索单条记录更快,那么并发性能就越高。 不同的方法造的轮子的摩擦力是不一样的,所以我们要尽可能的减少的摩擦力。

    1.4K00

    Lucene的索引系统和搜索过程分析

    最后找到了原因,虽然和这篇博文没什么大的关系,但还是想把自己学习的过程记录下来。 一,搜索引擎的索引系统简介 在介绍Lucene的search之前,有必要对搜索引擎的索引系统做一个简单的了解。...可以通过关键词,快速查找该关键词出现在哪里文档,并且在该文档中出现的次数和位置(这是建立在正排索引的基础上) 实际上这样一个简单的倒排索引结构还是十分简陋的,没有考虑到记录表中的何种文档排序方式更有利于检索...3.Lucene的索引结构  在 Lucene.net(4.8.0) 学习问题记录三: 索引的创建 IndexWriter 和索引速度的优化 中介绍了Lucene 索引结构的正向信息,所谓正向信息就是从文档的角度出发储存文档的域....doc 是倒排索引的第二部分(记录表),储存文档和文档中的词频信息。...Lucene的索引(这里就是指倒排索引第一部分也即词典索引)用的是FST数据结构,Lucene的记录表采用Frame of reference结构都不做细述。

    2.3K30

    小编个人简介

    熟练掌握盘古分词+Lucene.NET全文检索;熟悉SEO优化(URL重写,静态页生成等),网络优化,数据库优化。... WebForm服务器控件进行Web原生态应用开发。...同时,大学生具有相似的消费心理、共同的生活环境,交易商品具有共性。现在学校内的没有统一的闲置物品交易场所与平台,所以决定开发一套二手物品交易分享的平台,方便大家。...开发项目后台代码模块以及前台页面设计 主要负责系统后台代码的开发和前台页面的设计 参与需求文档、设计文档、文档的编写工作 技术描述: 利用Log4Net实现网站日志记录; 利用泛型和可变参数对数据层和业务层进行了方法抽取重构...; 利用MVC的过滤器实现用户登入状态验证以及用户权限过滤的功能 利用静态页自动生成,将商品详细信息的页面静态化,同时使用URL重写进一步SEO优化; 利用Lucene.Net + 盘古分词算法实现商品搜索功能

    1.8K30
    领券