随笔分类 - Lucene.net引擎技术
摘要:首先自问自答几个问题,以让各位看官了解写此文的目的 什么是站内搜索?与一般搜索的区别?很多网站都有搜索功能,很多都是用SQL语句的Like实现的,但是Like无法做到模糊匹配(例如我搜索“.net学习”,如果有“.net的学习”,Like就无法搜索到,这明显不符合需求,但是站内搜索就能做到),另外L
阅读全文
摘要:Lucene.net 性能《第八篇》 一、IndexReader性能分析 IndexReader完成了打开所有索引文件和提供底层reader API等繁重的工作,而IndexSearch则要简单得多。由于打开一个IndexReader需要较大的系统开销,因此最好是在所有搜索期间都重复使用一个Inde
阅读全文
摘要:搜索结果的处理和显示《第六篇》 一、提取搜索结果 1、TopDocs对象的说明 MaxScore:最高得分; TotalHits:匹配到的结果总数; ScoreDocs:匹配到的文档数组(内部可以获得文档Id与分数); 下面来看看获得的结果信息: Console.WriteLine(docs.Max
阅读全文
摘要:中文分词 《第七篇》 一、分词的方法 分词的方法主要有以下几种: 1、单字切分 单字切分就是把一段文字按照每个字去建立索引。 如果用来切分“我爱你伟大的中国”,就会切成“我”,“爱”,“你”,“伟”,“大”,“的”,“中”,“国”。这种分词效率低,但也能解决一些问题,聊胜于无。 2、二分法 二分法就
阅读全文
摘要:高级搜索 《第五篇》 一、解析搜索请求 搜索请求的概念是,用户输入关键词,然后程序去分析关键词,获取用户搜索的真实意图。 Lucene提供了一套QueryParser类,用来解析搜索请求。这个类是可以使用的。 1、QueryParser的基本使用 QueryParser用来分析用户输入的关键词,将关
阅读全文
摘要:索引管理 《第四篇》 一、索引管理 1、查看索引的相关信息 查看索引的信息大概有如下方法: 通过IndexWriter类读取索引的相关信息,将其显示出来。 通过IndexReader及其子类读取索引的相关信息,将其显示出来。 通过可视化工具查看索引的相关信息。 1、使用IndexWriter类读取索
阅读全文
摘要:构建索引 《第二篇》 一、理解创建索引的过程 创建索引的过程与写一本书差不多。 创建索引的过程如下: 建立索引器IndexWriter,这相当于一本书的框架。 建立文档对象Document,这相当于一篇文章。(对应数据库就是一张表) 建立信息字段对象,这相当于一篇文章中的标题,正文等。(对应数据库就
阅读全文
摘要:执行搜索 《第三篇》 一、执行搜索的基本方式 使用Lucene.net执行搜索,首先要创建IndexSearcher对象,然后通过Term和Query对象来封装用户输入的搜索条件,最后将结果封装在Hits对象中,返回给用户。 1、创建搜索器对象:IndexSearcher 创建IndexSearch
阅读全文
摘要:Lucene.net 基本示例 《第一篇》 Lucene.net是java平台搜索插件Lucene的移植版。它的主要用于开发搜索引擎,站内搜索等。 开篇之前,写个最简单的DEMO,让自己先体验下Lucene.net的魅力,顺便搭建环境。 static void Main(string[] args)
阅读全文
摘要:Lucene.net 性能《第八篇》 摘要: 一、IndexReader性能分析 IndexReader完成了打开所有索引文件和提供底层reader API等繁重的工作,而IndexSearch则要简单得多。由于打开一个IndexReader需要较大的系统开销,因此最好是在所有搜索期间都重复使用一个
阅读全文