Lucene--FuzzyQuery与WildCardQuery(通配符)
FuzzyQuery:
创建索引:
IndexWriter writer = new IndexWriter(path, new StandardAnalyzer(), false); 
writer.setUseCompoundFile(false);
Document doc1 = new Document(); 
Document doc2 = new Document(); 
Document doc3 = new Document(); 
Document doc4 = new Document(); 
Document doc5 = new Document(); 
Document doc6 = new Document();
Field f1 = new Field("content", "word", Field.Store.YES,
Field.Index.TOKENIZED); 
Field f2 = new Field("content", "work", Field.Store.YES,
Field.Index.TOKENIZED); 
Field f3 = new Field("content", "seed", Field.Store.YES,
Field.Index.TOKENIZED); 
Field f4 = new Field("content", "sword", Field.Store.YES,
Field.Index.TOKENIZED); 
Field f5 = new Field("content", "world", Field.Store.YES,
Field.Index.TOKENIZED); 
Field f6 = new Field("content", "ford", Field.Store.YES,
Field.Index.TOKENIZED);
doc1.add(f1);
doc2.add(f2);
doc3.add(f3);
doc4.add(f4);
doc5.add(f5);
doc6.add(f6);
writer.addDocument(doc1);
writer.addDocument(doc2);
writer.addDocument(doc3);
writer.addDocument(doc4);
writer.addDocument(doc5);
writer.addDocument(doc6);
writer.close();
注:IndexWriter中的create的变量值一般设为true
搜索:
IndexSearcher searcher = new IndexSearcher(path);
//构建一个Term,然后对其进行模糊查找 Term t = new Term("content", "work"); FuzzyQuery query = new FuzzyQuery(t);
//FuzzyQuery还有两个构造函数,来限制模糊匹配的程度
// 在FuzzyQuery中,默认的匹配度是0.5,当这个值越小时,通过模糊查找出的文档的匹配程度就
// 越低,查出的文档量就越多,反之亦然 FuzzyQuery query1 = new FuzzyQuery(t, 0.1f); FuzzyQuery query2 = new FuzzyQuery(t, 0.1f, 1);
Hits hits = searcher.search(query2); for (int i = 0; i < hits.length(); i++) { System.out.println(hits.doc(i));
}
searcher.close();
模糊搜索的三种构造函数,具体讲一下参数的用法(以第三个为例);
第一个参数当然是词条对象,第二个参数指的是levenshtein算法的最小相似度,第三个参数指的是要有多少个前缀字母完全匹配:
WildCardQuery:
通配符就更简单了,只要知道“*”表示0到多个字符,而使用“?”表示一个字符就行了:
IndexSearcher searcher=new IndexSearcher(path);
Term t1=new Term("content","?o*");
WildcardQuery query=new WildcardQuery(t1);
Hits hits=searcher.search(query);
for(int i=0;i<hits.length();i++)
{
     System.out.println(hits.doc(i));
}
That“s all!
Lucene--FuzzyQuery与WildCardQuery(通配符)的更多相关文章
- Lucene 的四大索引查询 ——bool 域搜索 通配符 范围搜索
		Lucene 的四大索引查询 清单1:使用布尔操作符 Java代码 //Test boolean operator blic void testOperator(String indexD ... 
- Apache Lucene(全文检索引擎)—搜索
		目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 本项目Demo已上传GitHub,欢迎大家fork下载学习:https://gith ... 
- 【转载】Lucene.Net无障碍学习和使用:搜索篇
		在上一篇中,我们初步理解了索引的增删改查基本操作.本文着重介绍一下常用的搜索,以及搜索结果的排序和分页.本文的搜索主要是基于前一篇介绍的文本文件的索引,建议下载最后改进的demo对照着看阅读本文,同时 ... 
- lucene-查询query->WildcardQuery使用通配符搜索
		Lucene也提供了通配符的查询,这就是WildcardQuery. package ch11; import org.apache.lucene.analysis.standard.Standard ... 
- lucene 3.0.2 search 各种各样的Query类型
		http://blog.sina.com.cn/s/blog_61d2047c010195mo.html lucene的这种各种各样的查询类型 1.TermQuery 最简单的Qu ... 
- Lucene系列六:Lucene搜索详解(Lucene搜索流程详解、搜索核心API详解、基本查询详解、QueryParser详解)
		一.搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字.对关键字进行分词.根据分词结果去索引库里面找到对应的文章id.根据文章id找到对应的文章 2. L ... 
- Lucene之模糊、精确、匹配、范围、多条件查询
		Lucene的查询方式很 丰富,对于数值类型的数据,采取TermRangeQuery的方式,对于String类型的,就可以采取TermQuery等,查询方式了,可以通过采取合适的查询方式,检索到数据. ... 
- Lucene.Net无障碍学习和使用:搜索篇
		一.初步认识搜索 先从上一篇示例代码中我们摘录一段代码看看搜索的简单实现: private TopDocs Search(string keyword,string field) { TopDocs ... 
- 后端技术杂谈3:Lucene基础原理与实践
		本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ... 
- 基于Lucene的全文检索实践
		由于项目的需要,使用到了全文检索技术,这里将前段时间所做的工作进行一个实践总结,方便以后查阅.在实际的工作中,需要灵活的使用lucene里面的查询技术,以达到满足业务要求与搜索性能提升的目的. 一.全 ... 
随机推荐
- 深入浅出spring IOC中三种依赖注入方式
			深入浅出spring IOC中三种依赖注入方式 spring的核心思想是IOC和AOP,IOC-控制反转,是一个重要的面向对象编程的法则来消减计算机程序的耦合问题,控制反转一般分为两种类型,依赖注入和 ... 
- 分布式锁实践(一)-Redis编程实现总结
			写在最前面 我在之前总结幂等性的时候,写过一种分布式锁的实现,可惜当时没有真正应用过,着实的心虚啊.正好这段时间对这部分实践了一下,也算是对之前填坑了. 分布式锁按照网上的结论,大致分为三种:1.数据 ... 
- WPF DatePicker 默认显示当前时间
			两种方法: 1.通过后台赋值: this.datePicker.SelectedDate = DateTime.Now; 2.前台控件的属性直接赋值 xmlns:sys="clr-names ... 
- 「小程序JAVA实战」小程序数据缓存API(54)
			转自:https://idig8.com/2018/09/22/xiaochengxujavashizhanxiaochengxushujuhuancunapi52/ 刚开始写小程序的时候,用户信息我 ... 
- 解决pip安装时的Readtime out问题
			方法一 pip --default-timeout=100 install -U Pillow就可以了方法二 pip install pyinstaller -i https://pypi.douba ... 
- sql日期查询
			select getdate() ,getdate()) ,getdate()) ) ,getdate())) ,getdate())) Select datename(weekday, getdat ... 
- eclipse里启动tomcat无法通过127.0.0.1访问
			在eclipse里面添加tomcat,再发布一个web项目进去,然后启动tomcat,日志显示tomcat在eclipse里面正常启动,hosts里面配置了ip跟域名的对应关系. 通过域名访问可以正常 ... 
- SpinBlur - 旋转模糊
			[SpinBlur - 旋转模糊] Using the Spin Blur effect, you can rotate and blur the image around one or more p ... 
- S 配置邮箱
- Java项目的结构
			-------siwuxie095 以 Hello World 为例 这个工程用一个文件夹表示,被放置在左侧的资源管理面板 Package Explorer 中 ... 
