Lucene helloworld

算法笔记(胡凡)学习笔记@Kaysen 本文旨在记录算法笔记学习过程中的收获和一些知识点,部分易错知识点只针对个人而言,CCF-CSP考试冲鸭!!! Chapter 2 C/C++快速入门(易错知识点) 2.1 基本数据类型 变量定义注意区分大小写。 一、整型 整型int,32bit(4Byte),取值范围是,绝对值在范围内的整数都可以定义成int。 长整型long long,64bit(8Byte),取值范围是,绝对值超过的整数就需要用long long存储。 ... 阅读详情
首先,确认要建立索引的文件。在E:\lucene\test下放置所有要建立索引的文件。
a.txt b.txt c.txt d.txt 内容如图:



选择开发工具和开发包开发工具
开发工具
Eclipse 3.2 
开发包
    lucene-demos-1.9-final.jar
    lucene-core-1.9-final.jar
4.6 Lucene实例开发
打开Eclipse,新建一个Java工程,工程有3个类,其中
Constants.java主要是用来存储一些常量的类,如索引文件路径和索引的存放位置;
LuceneIndex.java是用于对文件建闰索引的类;
LuceneSearch.java则是用于检索索引的类。
另外,工程还引入开发包lucene-demos-1.9-final.jar  lucene-core-1.9-final.jar
4.6.1 建立索引LuceneIndex.java
Constants.java创建
package test;
public class Constants {
    public final static String INDEX_FILE_PATH = "e:\\lucene\\test"; //索引的文件的存放路径
    public final static String INDEX_STORE_PATH = "e:\\lucene\\index"; //索引的存放位置
}

LuceneIndex.java创建
package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Date;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;

public class LuceneIndex {
    public static void main(String[] args) throws Exception {
        // 声明一个对象
        LuceneIndex indexer = new LuceneIndex();
        // 建立索引
        Date start = new Date();
        indexer.writeToIndex();
        Date end = new Date();
       
        System.out.println("建立索引用时" + (end.getTime() - start.getTime()) + "毫秒");

        indexer.close();
    }

    public LuceneIndex() {
        try {
            writer = new IndexWriter(Constants.INDEX_STORE_PATH,
                    new StandardAnalyzer(), true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 索引器
    private IndexWriter writer = null;

    // 将要建立索引的文件构造成一个Document对象,并添加一个域"content"
    private Document getDocument(File f) throws Exception {
        Document doc = new Document();

        FileInputStream is = new FileInputStream(f);
        Reader reader = new BufferedReader(new InputStreamReader(is));
        doc.add(Field.Text("contents", reader));

        doc.add(Field.Keyword("path", f.getAbsolutePath()));
        return doc;
    }

    public void writeToIndex() throws Exception {
        File folder = new File(Constants.INDEX_FILE_PATH);
        if (folder.isDirectory()) {
            String[] files = folder.list();
            for (int i = 0; i < files.length; i++) {
                File file = new File(folder, files[i]);
                Document doc = getDocument(file);
                System.out.println("正在建立索引 : " + file + "");
                writer.addDocument(doc);
            }
        }
    }

    public void close() throws Exception {
        writer.close();
    }

}
4.6.2 建立搜索LuceneSearch.java

LuceneSearch.java创建
package test;

import java.util.Date;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;

public class LuceneSearch {

    public static void main(String[] args) throws Exception {
        LuceneSearch test = new LuceneSearch();
        Hits h = null;
        h = test.search("中国");
        test.printResult(h);
        h = test.search("人民");
        test.printResult(h);
        h = test.search("共和国");
        test.printResult(h);
    }

    public LuceneSearch() {
        try {
            searcher = new IndexSearcher(IndexReader
                    .open(Constants.INDEX_STORE_PATH));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 声明一个IndexSearcher对象
    private IndexSearcher searcher = null;

    // 声明一个Query对象
    private Query query = null;

    public final Hits search(String keyword) {
        System.out.println("正在检索关键字 : " + keyword);
        try {
            // 将关键字包装成Query对象
            query = QueryParser.parse(keyword, "contents",
                    new StandardAnalyzer());

            Date start = new Date();
            Hits hits = searcher.search(query);
            Date end = new Date();
            System.out.println("检索完成,用时" + (end.getTime() - start.getTime())
                    + "毫秒");
            return hits;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public void printResult(Hits h) {
        if (h.length() == 0) {
            System.out.println("对不起,没有找到您要的结果。");
        } else {
            for (int i = 0; i < h.length(); i++) {
                try {
                    Document doc = h.doc(i);
                    System.out.print("这是第" + i + "个检索到的结果,文件名为:");
                    System.out.println(doc.get("path"));
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println("--------------------------");
    }

}
4.6.3 结果分析
运行LuceneIndex.java
控制区打印结果如下:
正在建立索引 : e:\lucene\test\a.txt
正在建立索引 : e:\lucene\test\b.txt
正在建立索引 : e:\lucene\test\c.txt
正在建立索引 : e:\lucene\test\d.txt
建立索引用时94毫秒

打开E:\lucene\index目录,可以看到刚才建立的索引,如图:

运行搜索
索引已经成功建立,现在分别以“中华”、“人民”,“共和国”为关键字来在索引中进行检索;
在Eclipse中运行LuceneSearch.java
可以看到控制区输出了检索结果如下:
正在检索关键字 : 中国
检索完成,用时16毫秒
这是第0个检索到的结果,文件名为:e:\lucene\test\b.txt
--------------------------
正在检索关键字 : 人民
检索完成,用时0毫秒
这是第0个检索到的结果,文件名为:e:\lucene\test\a.txt
这是第1个检索到的结果,文件名为:e:\lucene\test\c.txt
这是第2个检索到的结果,文件名为:e:\lucene\test\b.txt
--------------------------
正在检索关键字 : 人
检索完成,用时15毫秒
这是第0个检索到的结果,文件名为:e:\lucene\test\a.txt
这是第1个检索到的结果,文件名为:e:\lucene\test\c.txt
这是第2个检索到的结果,文件名为:e:\lucene\test\b.txt
--------------------------
首先,搜索是一种服务。在本例中,仅是通过一段代码来演示了API的使用。这与真正的服务性搜索还相去甚远。比如用户的界面的友好性、检索结果的显示、用户响应时间长短、关键字分析的能力等,这些都是评价一个搜索引擎好坏的参数。
其次,对于一个简单的搜索引擎来说,索引只要存放在某个特定的硬盘上就可以了。如本例中,我们使用一个目录来作为索引的存放位置。然而,如果要构建一个大型的集群化的搜索引擎,每天光日志的大小就有上百G,更不用说索引文件的大小了。很显然不可像本例中那样使用某个目录来存放,而应当采用分布式存储的方式,并利用存储网络技术进行连接。
当然,对于非专业型电子商务的网站来说,搜索只是它所提供一个特性,并非一定要构建什么大型集群化搜索引擎。
【Embabel Agent】生产级最佳实践与避坑指南 本文围绕架构师最关心的 8 大维度展开:测试策略(FakeOperationContext 实现 Action 级单元测试、Prompt 质量与敏感信息校验)、MCP 集成实战(STDIO/HTTP 双模式、自建 Server、Docker MCP 生态)、RAG 检索增强、OpenTelemetry 全链路可观测性与追踪、Docker/K8s 生产部署、API Key 管理与 @Tool 安全防护、模型选择/缓存/并行等性能优化,以及过度依赖 LLM、忽略错误处理等 8 大常见反模式避坑指南。 阅读详情

相关推荐

【OpenCV】背景替换(opencv、python),照片、证件照的背景替换(抠图)

目录步骤:导入库1、读入将要抠图的图片2、create一个带颜色域的mask3、通过mask使得原图只显示汽车,即抠出所需要的部分4、将要替换掉的图像resize或裁剪到和上述图片一样的大小5、将该图片预留出将要重叠上的部分,即将mask部分改为(0,0,0)6、通过和运算使得两部分图片mask部分替换7、最后保存图片 步骤: 导入库 import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np imp

weixin_41729258的博客 4361

第三百节 Lucene教程 - Lucene HelloWorld

第三百节 Lucene教程 - Lucene HelloWorld

2301_78772942的博客 676

【可信数据空间-连接器技术架构设计方案】

一句话概括连接器是可信数据空间的“数据保镖”和“外交官”。连接器就是一个部署在你本地的软件代理,它代表你安全地对外提供数据服务,确保在共享数据价值的同时,牢牢守住数据的所有权和控制权。它是实现“数据可用不可见”这一理想的关键技术部件。一个生动的比喻:银行的金库和接待员想象一下,你的数据就是藏在银行金库里的黄金和钞票。金库(你的内部数据库): 绝对安全,外人绝对不能进。接待员(连接器): 坐在银行大厅里,负责与客户打交道。客户向接待员提出请求:“我想取1000元。

u014716614的博客 2264

Lucene入门 - HelloWorld

前言: Lucene 是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引...

郑清 983

PostgreSQL+Citus分布式集群实战:从零搭建到性能调优

本文详细介绍了如何从零开始搭建并优化PostgreSQL+Citus分布式数据库集群。内容涵盖集群规划、源码编译安装、Citus扩展部署、节点配置、分布式表创建以及核心性能调优策略,为应对海量数据增长提供了完整的部署指南和实战解决方案。

oo7890的博客 626

机器人C++开源库The Robotics Library (RL)使用手册(三)

进入VS工程,我们先看看这些功能函数及其依赖库的分布关系:rl命名空间下,主要有八大模块。搞定VS后将逐个拆解。

qq_34839823的博客 1736

Lucene-HelloWorld

1.1        准备lucene的开发环境   搭建lucene的开发环境,要准备lucene的jar包,要加入的jar包至少有: 1)    lucene-core-3.1.0.jar     (核心包) 2)    lucene-analyzers-3.1.0.jar    (分词器) 3)    lucene-highlighter-3.1.0.jar    (高亮器)

球球之家 759

STM8开发环境搭建(STVD + COSMIC)

一、STM8开发IDE 1. STVD + COSMIC ST Visual Develop (STVD)只支持汇编开发,C语言开发需要再安装COSMIC,配套起来使用。 2. IAR IAR也可以用来开发STM8 下面介绍STVD + COSMIC的搭建方式 二、环境搭建 1. STVD下载、安装 直接从官网下载:https://www.st.com/en/development-tools/stvd-stm8.html 安装很简单,基本下一步往下点。 2. COSMIC下载、安装 对于stm8可以使用3

a183635870的博客 1万+

[lucene] lucene的HelloWorld程序

一.全文检索 1.1全文检索的定义:全文检索,即全文搜索,是对文本数据进行索引搜索。 1.2全文检索的特点:做了索引;对关键字做了高亮显示;摘要截取;搜索效果更加准确;只关注文本,不关注语意。 1.3使用场景:替换数据库的模糊查询,提高查询效率;全文检索是搜索引擎的基础;垂直搜索;在word,...

chengludai0486的博客 256

PCAN-Explorer5使用教程

在PCAN中新建工程,导入DBC文件(右键apply),导入采集的数据选择对应的CAN通道点击红框中的标记可选择想要查看的信号在plot界面跳出属性,可调整信号显示的样式和最大最小值调出cursor,选择需要观测的变量,选中右键style——Period 可显示间隔时间增加cursor,可观测多个变量。

weixin_43997043的博客 6909

YOLOv8改进 | 主干网络 | 在backbone添加Swin-Transformer层【论文必备】

YOLOv8改进,Swin-Transform,YOLOv8添加Swin-Transform

kay_545 2366

Lucene之HelloWorld

     Lucene是一套用于全文检索和搜寻的开源程式库,由Apache软件基金会支持和提供。Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。--...

混合动力火锅的博客 339

LPDDR6与LPDDR5 channel/rank/die/bank技术探讨

LPDDR6与LPDDR5 channel/rank/die/bank技术探讨

zilan23的博客 3641

Lucene之Helloworld

[b]Lucene[/b]不是一个完整搜索引擎,不具备爬虫功能,管理界面之类的功能,可其部分之项目中实现了网站的搜索引擎,[b][url=http://lucene.apache.org/nutch/]Nutch[/url][/b]就是其中的一个,基于Lucene实现的搜索引擎应用. . 本文记录下自己的学习点点滴滴,实现一个简单的程序, [b]Hello world 之实现文本搜索[/...

okwangxing的专栏 151

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Lucene全文检索之HelloWorld

Lucene全文检索之HelloWorld 1.下载Lucene4.4 然后解压 2.新建一个Java项目,名称为HelloLucene 3.新建一个lib文件夹,将需要的jar文件复制到lib中,本项目所需要的jar文件如下: [图] 然后将这些jar文件添加到buildPath中 3.新建一个包com.njupt.zhb,新建一个类:HelloLucene.java,代

郑海波(莫川)的优快云博客 3594

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Lucene 初步 之 HelloWorld

万恶的源头 HelloWorld 要完成lucene 的配置 需要几个jar包 (如果需要可以留言我私发) 创建索引API分析: 1.Directory:类代表一个Lucene索引的位置,FSDirectory:它表示一个存储在文件系统中的索引的位置 2.Analyzer 类是一个抽象类, 它有多个实现,在一个文档被入索引库之前,首先需要对文档内容进行分词处理,针对不同的...

weixin_34362991的博客 154

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Lucene HelloWorld实现

package com.java1234.lucene; import java.io.File; import java.io.FileReader; import java.nio.file.Paths; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis....

weixin_30781433的博客 116

Lucene HelloWorld

首選新建一個類,主要用來創建、查詢、刪除索引。 [code="java"]package com.sue.lucene; import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.document.Document; import org.apa...

sue8534091的博客 154

用Lucene写的一个HelloWorld

下面是今天初次看的一点Lucene,整理出笔记备忘~~ 下载这个文件lucene-2.4.0.zip到任意目录并解压,得到lucene-core-2.4.0.jar。 这里有Lucene的API:http://hudson.zones.apache.org/hudson/job/Lucene-trunk/javadoc//index.html 注意:Lucene 2.0以上使用的JDK...

weixin_30856725的博客 180

Lucene初识HelloWorld

本例子基于Maven构建 首先创建一个Maven项目叫Lucene01 在pom.xml贴上相关依赖 org.apache.lucene lucene-core 6.6.0 org.apache.lucene lucene-queryparser 6.6.0 org.apache.luc

GaoChenXi 177

Lucene 学习 2 自己写 HelloWorld

又接到新命令,要学 Linux,还要学 Hadoop。

ivolianer的专栏 912

Lucene实战(一)Lucene介绍及HelloWorld运行(附Eclipse工程)

前言 Lucene是一个开源的、成熟的java检索库。

XiaoM的专栏 2160

lucene学习之helloworld(简单实例)

引子 What’s Lucene Lucene是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能. 不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,一个Library.你也可以把它理解...

weixin_33910137的博客 135

全文检索之lucene入门篇HelloWorld

首先,先看下目录结构。        第一步,在eclipse中建立jave项目。需要引入jar包,只有3个,分别是lucene的分词器和核心包,还有高亮显示器。做法是建立一个lib文件夹,将jar包拷过来,然后右击,选择Build Path(构建路径),Addto Build Path(添加到项目的构建路径)。           然后建立datasource文件

铃铛 5148

一个例子学懂lucene--Helloworld

lucene的一个Helloworld例子,麻雀虽小,五脏俱全。 所需jar包:lucene-analyzers-3.6.2.jar、lucene-core-3.6.2.jar、junit-4.4.jar import java.io.IOException; import org.apache.lucene.analysis.Analyzer; import org.apache.l...

lchina1314的专栏 141

lucene7.1.0 (二) helloworld

package com.ljl.lucene.demo.helloworld; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.ap

青鸟飞鱼 2944
上一篇: oracle trunc()函数的用法
下一篇: java全文检索 自http://zpball.iteye.com
java_freshman01
博客等级 码龄17年 22粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值