
全文检索
《Drools规则引擎技术指南》作者
在其位,就要谋其事。追求卓越,成功就能追到我。我的微信公众号是——程序猿之塞伯坦,我的V Lai01102020 企鹅号448998253,讨论群:974369023 及 676219749
展开
-
1、什么是全文检索
1.1结构化数据和非结构化数据我们生活中的数据总体分为两种:结构化数据和非结构化数据。 · 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。· 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等。1.2对结构化数据的搜索对数据库的搜索,用SQL语句。再如对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等。1.3对非结...原创 2016-12-13 11:21:23 · 5390 阅读 · 0 评论 -
15、Analyzer分析器之中文分析器的扩展
其实在第五章节里已经有介绍过下面的分析器了,只是没有做例子,今天将下面没有做过例子分析器进行一个例子说明paoding: 庖丁解牛最新版在 https://code.google.com/p/paoding/ 中最多支持Lucene 3.0,且最新提交的代码在 2008-06-03,在svn中最新也是2010年提交,已经过时,不予考虑。mmseg4j:最新版已从 https://code.goog...原创 2016-12-19 21:15:58 · 1899 阅读 · 0 评论 -
14、Analyzer之TokenFilter
import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.TokenFilter;import org.apache.lucene.analysis.TokenStream;import org.apache.lucene.analysis.core.WhitespaceAnalyzer;imp...转载 2016-12-19 21:06:40 · 460 阅读 · 0 评论 -
11、相关度排序
1.1 什么是词的权重? 通过索引部分的学习明确索引的最小单位是一个Term(索引词典中的一个词),搜索也是要从Term中搜索,再根据Term找到文档,Term对文档的重要性称为权重,影响Term权重有两个因素:l Term Frequency (tf):指此Term在此文档中出现了多少次。tf越大说明越重要。词(Term)在文档中出现的次数越多,说明此词(Term)对该文档越重要,...原创 2016-12-15 15:45:20 · 1012 阅读 · 0 评论 -
10、索引库的查询四之:Lucene的高级搜索技术
Lucene的高级搜索技术首先要说的就是 SpanTermQuery ,他和TermQuery用法很相似,唯一区别就是SapnTermQuery可以得到Term的span跨度信息,用法如下:@Test public void testSpanTermQuery() throws Exception{ Directory directory = FSDirectory.op...原创 2016-12-15 15:40:44 · 2297 阅读 · 0 评论 -
9、索引库的查询三之:Lucene的多样化查询
1.4 Lucene的多样化查询在指定的项范围内搜索-TermRangeQuery类通过字符串搜索-PrefixQuery类 组合查询-BooleanQuery类通过短语搜索-PhraseQuery类通配符查询-WildcardQuery类搜索类似项-FuzzyQuery类不匹配文档-MatchNoDocsQuery类解析查询表达式-QueryParser类多短语查询-MultiPhraseQ...原创 2016-12-15 15:37:12 · 922 阅读 · 0 评论 -
8、索引库的查询二之:数值类型索引查询
IntPoint查询整型的查询方式:这种查询的方式,是将设置域中的值表明为整型,通过代码进行分析说明创建整形索引Document document = new Document();Field intPoint = new IntPoint("age", 15);document.add(intPoint);域名为 age 值为15查询的有以下几种方式:1、匹配精确//整型精确数值查询 这里要...原创 2016-12-15 15:31:10 · 647 阅读 · 0 评论 -
7、索引库的查询一之:简单查询
1.1 TermQuery只需要指定要搜索的域和要搜索的关键词就可以搜索。//使用TermQuery查询@Testpublic void testTermQuery() throws Exception { //以读的方式打开索引库 Directory directory = FSDirectory.open(Paths.get("D:\\LucentTest\\lucene...原创 2016-12-15 15:24:04 · 449 阅读 · 0 评论 -
4、Lucene 入门程序及api 的说明
1.1 需求实现一个资源管理器的搜索功能,通过关键字搜索,凡是文件名或文件内容包括关键字的文件都要找出来。注意:该入门程序只对文本文件(.txt)搜索。 1.2 开发环境 Jdk:1.7.0_72以上的版本 Lucene包:lucene-core-4.10.3.jarlucene-analyzers-common-4.10.3.jarlucene-queryparser-4.10.3.jar其它:...原创 2016-12-13 15:31:13 · 2496 阅读 · 0 评论 -
13、自定义Analyzer实现字长过滤
import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.TokenStream;import org.apache.lucene.analysis.Tokenizer;import org.apache.lucene.analysis.core.WhitespaceTokenizer;impo...原创 2016-12-16 11:04:38 · 597 阅读 · 0 评论 -
12、自定义Analyzer实现扩展停用词
自定义Analyzer实现扩展停用词继承自Analyzer并覆写createComponents(String)方法维护自己的停用词词典重写TokenStreamComponents,选择合适的过滤策略import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.CharArraySet;import ...原创 2016-12-16 11:03:26 · 888 阅读 · 0 评论 -
6、索引库的维护
1.1.1 实现步骤第一步:创建一个IndexWriter对象打开索引库第二步:创建一个Document对象。向document中添加域。第三步:把document写入索引库。第四步:关闭索引库。1.1.2 代码实现// 添加文档@Testpublic void addDocument() throws Exception {// 打开索引库// 指定索引库存放的位置Director...原创 2016-12-13 16:12:57 · 623 阅读 · 0 评论 -
3、Lucene实现全文检索的流程
1.1 案例描述我们以一个案例来研究全文检索系统架构:实现一个文件的搜索功能,通过关键字搜索文件,凡是文件名或文件内容包括关键字的文件都需要找出来。 1.2索引和搜索流程图1、绿色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括:确定原始内容即要搜索的内容à采集文档à创建文档à分析文档à索引文档 2、红色表示搜索过程,从索引库中搜索内容,搜索过程包括:用户通过搜索...原创 2016-12-13 11:29:41 · 3572 阅读 · 0 评论 -
2、什么是Lucene
1.1什么是Lucene?Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能。1.2Lucene与搜索引擎的区别全文检索系统是按照全文检索理论建立起来的用于提供全文检索服务的软件系统。全文检索系统是一个可以运行的系统,包括建立索引、处理...原创 2016-12-13 11:23:53 · 571 阅读 · 0 评论 -
16、遍历所有关键字的api方式
之前的一些讲述中,我们介绍了查询索引的功能,但一般都是通过域和关键字进行的查询,那如果我们不知道域或想要查询出所有的关键字怎么办呢,下面我就给出两个解决方案,代码很简单通过指定域方式获取该域中所有的关键字//遍历指定域中的所有关键字的方式@Testpublic void searchIndex() throws Exception { //打开索引库 //指定索引库存放的位置...原创 2016-12-28 11:59:15 · 1154 阅读 · 0 评论