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里面的查询技术,以达到满足业务要求与搜索性能提升的目的. 一.全 ...
随机推荐
- VS2015 Git 源代码管理工具使用记录
1. 首先到源代码托管平台申请个账户:https://git.oschina.net/ 2.创建流程图: 2.1 开始创建项目: 2.2 3. 4.
- pyspark连接mysql
from pyspark import SparkContext from pyspark.sql import SQLContext if __name__=="__main__" ...
- 峰Spring4学习(7)spring对JDBC的支持
第一节: 工程结构: 1)student.java: package com.cy.model; public class Student { private int id; private Stri ...
- JVM实例以及内存的分配机制
JVM:一台用来模拟计算机执行计算指令的虚拟计算机,拥有自己的指令,指令执行环境,虚拟内存等. 下面介绍虚拟机(JVM)--cpu,寄存器,内存,指令 ======================== ...
- iOS开发系列-ARC浅解
一.什么是 ARC ? 所谓ARC就是Automatic Reference Counting , 即自动引用计数.ARC是自iOS5引入的.ARC机制的引入是为了简化开发过程的内存管理的.相对于之前 ...
- django-连接mysql失败
如果你的数据库连接报错,缺少组件,可以安装以下的包 安装依赖(如果使用虚拟环境,需要在虚拟环境下安装) 安装mysql开发依赖包 sudo apt-get install libmysqlclie ...
- sonar 的使用
1.依赖: <dependency> <groupId>org.codehaus.mojo</groupId> <artifactId>sonar-ma ...
- views中class定义(类的写法)CBV
from django.views import View class Home(View): def dispatch(self, request, *args, **kwargs): print( ...
- nested exception is java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
Deploying inside Eclipse v3.6 raises the exception. The WEB-INF/classes/ folder in the .war doesn't ...
- dsm 黑 离线转码 备忘
6.2以后不行 我用的是 DS3617_6.17-15284 进入下载安装文件和工具 1安装 .套件来源增加 packages.synocommunity.comb.设置信任级别为任何发行者 c.找到 ...