文档章节

Lucene-5.2.1学习:入门

Harmel
 Harmel
发布于 2015/08/11 12:06
字数 574
阅读 9277
收藏 17

1、Lucene的核心jar包

lucene-core-5.2.1.jar

lucene-analyzers-common-5.2.1.jar

lucene-queryparser-5.2.1.jar

2、主要开发包说明

org.apache.lucene.analysis:语言分析器,主要用于分词

org.apache.lucene.document:索引文档的管理

org.apache.lucene.index:索引管理,如增、删、改

org.apache.lucene.queryparser:查询分析

org.apache.lucene.search:检索管理

org.apache.lucene.store:数据存储管理

org.apache.lucene.util:工具包

3、写入索引操作的核心类

Directory:代表索引文档的存储位置,这是一个抽象类有FSDirectoryRAMDirectory两个主要子类。前者将索引写入文件系统,后者将索引文档写入内存。

Analyzer:建立索引时使用的分析器,主要子类有StandardAnalyzer(一个汉字一个词),还可以由第三方提供如开源社区提供一些中文分词器。

IndexWriterConfig:操作索引库的配置信息

IndexWriter:建立索引的核心类,用来操作索引(增、删、改)

Document:代表一个索引文档

Field:代表索引文档中存储的数据,新版本的Lucene进行了细化给出了多个子类:IntFieldLongFieldFloatFieldDoubleFieldTextFieldStringField等。

4、写入索引

package cn.harmel.lucene;

import java.io.IOException;
import java.nio.file.Paths;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.TextField;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;

public class First {

    public static void main(String[] args) throws IOException {
        Analyzer a = new StandardAnalyzer();
        Directory dir = FSDirectory.open(Paths.get("./index"));
        IndexWriterConfig iwc = new IndexWriterConfig(a);
        IndexWriter iw = new IndexWriter(dir, iwc);
        Document doc = new Document();
        doc.add(new TextField("info", "this is my first lucene test", Field.Store.YES));
        iw.addDocument(doc);
        iw.close();
        dir.close();
    }

}

5、查询索引操作的核心类

IndexReader:读取索引的工具类,常用子类有DirectoryReader

IndexSearch:查询索引的核心类

QueryParser:查询分析器,表示从哪里查用哪个分析器

Query:代表一次查询

TopDocs:封装了匹配情况,比如匹配多少个

ScoreDoc:匹配的数据,里面封装了索引文档的得分和索引ID

6、查询索引

package cn.harmel.lucene;

import java.io.IOException;
import java.nio.file.Paths;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;

public class Second {

    public static void main(String[] args) throws IOException, ParseException {
        Analyzer a = new StandardAnalyzer();
        Directory dir = FSDirectory.open(Paths.get("./index"));
        IndexReader reader = DirectoryReader.open(dir);
        IndexSearcher is = new IndexSearcher(reader);
        QueryParser parser = new QueryParser("info", a);
        Query query = parser.parse("lucene");
        TopDocs topDocs = is.search(query, 1000);
        System.out.println("总共匹配多少个:" + topDocs.totalHits);
        ScoreDoc[] hits = topDocs.scoreDocs;
        // 应该与topDocs.totalHits相同
        System.out.println("多少条数据:" + hits.length);
        for (ScoreDoc scoreDoc : hits) {
            System.out.println("匹配得分:" + scoreDoc.score);
            System.out.println("文档索引ID:" + scoreDoc.doc);
            Document document = is.doc(scoreDoc.doc);
            System.out.println(document.get("info"));
        }
        reader.close();
        dir.close();
    }

}

© 著作权归作者所有

Harmel
粉丝 9
博文 33
码字总数 14582
作品 0
武汉
程序员
私信 提问
加载中

评论(3)

0Iu_uI0
0Iu_uI0
66666
江南红衣
江南红衣
0
songzi1229
songzi1229
79浅显易懂
Lucene 5.2.1 发布,Java 搜索引擎

Lucene 5.2.1 发布,包含 3个 bug 修复: * Fix class loading deadlock relating to Codec initialization, default codec and SPI discovery. * NRT readers now reflect a new commit eve......

oschina
2015/06/16
1K
10
solr5.2.1-----环境搭建

1、下载 下载Tomcat7.0.64 http://mirrors.hust.edu.cn/apache/tomcat/ 与solr-5.2.1 http://mirrors.hust.edu.cn/apache/lucene/solr/ 并解压,Tomcat解压后的目录为:D:apache-tomcat-7.0......

火龙战士
2015/11/05
0
1
Hibernate Search 5.5.0.Alpha1 发布

Hibernate Search 5.5.0.Alpha1 发布,此版本更新内容如下: ** 改进 * [HSEARCH-1849] - Upgrade to Apache Lucene 5.2.1 * [HSEARCH-1952] - ScheduledCommitPolicy might open unnecessar......

淡漠悠然
2015/08/10
888
0
lucene分布式搜索

想将lucene和hadoop结合,新手入门有点茫然,不知哪位可以提供点学习资料,万分感谢!!!!

MR_chenxj
2014/03/19
295
1
Lucene第一个入门学习例子

看Lucene in Action的时候,练习的一个入门例子。 在使用Lucene进行文本内容搜索前,需要先对指定的目录下的文件进行建立索引,代码如下: import java.io.File;import java.io.FileFilter;...

f1024557668
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

八、RabbitMQ的集群原理

集群架构 写在前面 RabbitMQ集群是按照低延迟环境设计的,千万不要跨越WAN或者互联网来搭建RabbitMQ集群。如果一定要在高延迟环境下使用RabbitMQ集群,可以参考使用Shovel和Federation工具。...

XuePeng77
今天
1
0
mac系统下,brew 安装mysql,用终端可以连接,navicat却连接不上?

问题: 1.报错? 2059 - Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found 2.自己通过设置,已经把密......

写bug的攻城狮
昨天
2
0
老生常谈,HashMap的死循环

问题 最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。 由于HashMap...

群星纪元
昨天
5
0
拉普拉斯算子

拉普拉斯算子是二阶微分算子。 我们知道,一维离散信号一阶微分公式如下: 相应的,一维离散信号二阶微分公式如下: 由于图像有x和y两个方向,因此图像信号属于二维离散信号。其在x,y两个...

yepanl
昨天
3
0
记录"正则表达式"

详细请查看我的博客:https://blog.enjoytoshare.club/article/RegularExpression.html 1 写在前面 正则表达式(Regular Expression)在代码中常常简写为regex。正则表达式通常被用来检索、替...

wugenqiang
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部