索引的检索相关代码

常用类简介

Directory 指定索引所在目录

FSDirectory 存放于磁盘上的文件系统

RAMDirectory 存放于内存中的目录,用于测试等用途

如Directory directory=FSDirectory.open(new File("filePath"));

IndexReader 读索引,依靠Directory类初始化

如 IndexReader reader=DirectoryReader.open(directory);

IndexSearcher 用于索引检索,依靠IndexReader类初始化。依靠Query类进行搜索。

如IndexSearcher searcher=new IndexSearcher(reader);

Analyzer 分词器

如Analyzer analyzer=new StandardAnalyzer();

Term 描述要查找单词所在的域(Field)与内容(content)。

如Term term=new Term("field","content");

Query 查询类,抽象类

TermQuery 最简单、最基本的Query,用来查询不切分的单词。依靠Term类初始化

如Query query=new TermQuery(term);

TopDocs 存放IndexSearcher类的查询结果

如TopDocs topDocs=searcher.search(query,10);

ScoreDoc ScoreDoc[]数组用来存放查询结果中的文档信息

如ScoreDoc[] scoreDocs = topdocs.scoreDocs;

ScoreDoc 中的score属性表示相关程度,取值范围[0,1],越大越相关。

概览:

		Directory directory=FSDirectory.open(new File("filePath"));
			IndexReader reader=DirectoryReader.open(directory);
			IndexSearcher searcher=new IndexSearcher(reader);
			Analyzer analyzer=new StandardAnalyzer();
			Term term=new Term("field","content");
			Query query=new TermQuery(term);
			TopDocs topDocs=searcher.search(query, 10);
			ScoreDoc[] hits=topDocs.scoreDocs;
			for(ScoreDoc hit :hits){
				System.out.println(hit.doc+hit.score);
			}
			
时间: 2024-08-25 07:40:36

索引的检索相关代码的相关文章

基于lucene的案例开发:实时索引的检索

转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44279753 http://www.llwjy.com/blogdetail/31bb705106379feaf6d31b58dd777be6.html 个人博客小站搭建成功,网址 www.llwjy.com,欢迎大家来吐槽~ 在前面的博客中,我们已经介绍了IndexSearcher中的检索方法,也介绍了如何基于lucene中的NRT*类去创建实时索引,在这篇博客中我们就重点介

Lucene索引并检索数据库

1.Lucene简介 Lucene是一个开源的全文检索引擎工具包,它提供了完整的索引引擎.查询引擎和部分文本分析引擎.Lucene为软件开发人员提供了一套简单易用的检索引擎开发工具包,以便在系统中实现全文检索功能,或者以Lucene为基础建立一套完整的全文检索引擎. 全文搜索引擎的工作原理:扫描问答库中的每一条记录并分词建立索引,索引记录了词在每一条问答记录中出现的次数和位置,当收到用户的问题时,也会对问题进行分词,然后从索引中找出包含这些词的所有回答记录,再分别计算这些问答记录与用户问题的相似

rabttmq php延迟消息 相关代码(网上没搜到自己琢磨着弄好了)

前言:  作为一个运维人员不背锅,谁背呢! 正文: 网上都是2种办法去实现,第二种我就不说了,要升级rabbitmq 别人也说什么什么不行 好吧~今天按照网上说的 TTL + DLX 的方式来实现 延迟消息(java的 python的相关代码都有 就是没有 拍huang片的!!!!) 撸代码咯: 1.首先得要创建一个新的队列 新的交换机来存放延迟消息 并且设置新的队列消息ttl到期后 转发的 交换机 和 routeing key (我的老的交换机为e_test  key 为k1) 主要代码为:

Kafka Producer相关代码分析

Kafka Producer相关代码分析 标签(空格分隔): kafka Kafka Producer将用户的消息发送到Kafka集群(准确讲是发送到Broker).本文将分析Producer相关的代码实现. 类kafka.producer.Producer 如果你自己实现Kafka客户端来发送消息的话,你就是用到这个类提供的接口来发送消息.(如果你对如何利用Producer API来发送消息还不是很熟悉的话,可以参看官方的例子).这个类提供了同步和异步两种方式来发送消息. 异步发送消息是基于同

JSON相关代码

string json1 = @"{ ""publicaccount"": { ""id"": ""1"", ""name"": ""abc"" }, ""root"": { ""messages"": [ { &quo

使用Mybatis Generator自动生成Mybatis相关代码

本文将简要介绍怎样利用Mybatis Generator自动生成Mybatis的相关代码: 一.构建一个环境: 1. 首先创建一个表: Sql代码   CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); 2. 然后注入数据 Sql代码   insert into pet values('Fluffy', 'Harold',

myBatis自动生成相关代码文件配置(Maven)

pom.xml文件添加配置 <build> <finalName>generator</finalName> <plugins> <!-- maven编译环境指定JDK版本 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <

DataNode与NameNode交互机制相关代码分析

HDFS Federation是为解决HDFS单点故障而提出的NameNode水平扩展方案,该方案允许HDFS创建多个Namespace以提高集群的扩展性和隔离性.在Federation中新增了block-pool的概念,block-pool就是属于单个Namespace的一组block,每个DataNode为所有的block-pool存储block,可以理解block-pool是一个重新将block划分的逻辑概念,同一个DataNode中可以存储属于多个block-pool的多个block.所

javaee实现在spring执行后执行相关代码

1:首先在web.xml中声明servlet <servlet> <servlet-name>ApplicationOnload</servlet-name> <servlet-class>com.ApplicationOnload</servlet-class> </servlet> <servlet-mapping> <servlet-name>ApplicationOnload</servlet-n