一个简单的lucene例子

lucene4.7 开发简单实例 lucene4.7开发实例,包括索引创建、修改、删除、排序、分页、优化、高亮显示、常见几种分词器等。实例加全jar包 立即下载

package com.java_min.test;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Filter;
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;
import org.junit.Test;

import com.java_min.util.File2DocumentUtils;

public class HelloWorld {

 private String filePath = "D://workspace//luceneDemo//luceneDateSource//test.txt";
 private String indexPath = "D://workspace//luceneDemo//luceneIndex";
 private Analyzer analyzer = new StandardAnalyzer();
 
 /**
  *
  * @throws Exception
  * Administrator  Jun 15, 2010
  *
  * 创建索引
  * IndexWriter是用来操作(增、删、改)索引库的
  *
  */
 @Test
 public void createIndex() throws Exception{
  
  /**
   * 文件系统路径(将索引放入磁盘)
   */
  Directory directory = FSDirectory.getDirectory(indexPath);
  
  /**
   * 内存路径(将索引放入内存)
   */
  //Directory directory = new RAMDirectory();
  
  Document doc = File2DocumentUtils.file2Document(filePath);
  
  IndexWriter indexWriter = new IndexWriter(directory,analyzer,true,MaxFieldLength.LIMITED);
  indexWriter.addDocument(doc);
  indexWriter.close();
 }
 
 //搜索
 @Test
 public void searchWord() throws Exception {
  String queryStr = "中国足球";
  
  //1.把要搜索的文本解析为Query
  String[] fields = {"name","context"};
  QueryParser queryParser = new MultiFieldQueryParser(fields,analyzer);
  Query query = queryParser.parse(queryStr);
  
  //2.进行查询
  IndexSearcher indexSearcher = new IndexSearcher(indexPath);
  Filter filter = null;
  TopDocs topDocs = indexSearcher.search(query, filter,100000);
  System.out.println("当前共搜索到【"+topDocs.totalHits+"】条匹配结果");
  
  //3.打印结果
  for(ScoreDoc scoreDoc:topDocs.scoreDocs){
   int doc = scoreDoc.doc; //文档内部编号
   Document document = indexSearcher.doc(doc); //根据编号取出相应文档
   File2DocumentUtils.printDocumentInfo(document); //打印出文档信息
  }
 }
}

 

 

 

 

package com.java_min.util;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.NumberTools;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;

public class File2DocumentUtils {

 /**
  *
  * @param path
  * @return
  * Administrator  Jun 16, 2010
  *
  * file到document的转换
  */
 public static Document file2Document(String path){

  File file = new File(path);
  
  Document document = new Document();
  document.add(new Field("name",file.getName(),Store.YES,Index.ANALYZED));
  document.add(new Field("context",getFileContext(file),Store.YES,Index.ANALYZED));
  document.add(new Field("size", NumberTools.longToString(file.length()),Store.YES,Index.NOT_ANALYZED));
  document.add(new Field("path",file.getAbsolutePath(),Store.YES,Index.NO));
  
  return document;
 }
 
 /**
  *
  * @param doc
  * Administrator  Jun 16, 2010
  *
  * document到file的转换
  */
 public static void document2File(Document doc){
  
 }
 
 /**
  *
  * @param file
  * @return
  * Administrator  Jun 16, 2010
  *
  * 得到文件内容
  */
 public static String getFileContext(File file){
  StringBuffer context = new StringBuffer();
  try {
   BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
   for(String line = null;(line = bf.readLine()) != null;){
    context.append(line).append("/n");
   }
  } catch (Exception e) {
   throw new RuntimeException(e);
  }
  return context.toString() ;
 }
 
 /**
  *
  * @param document
  * Administrator  Jun 16, 2010
  *
  * 打印document
  *
  * 获取name属性的值的两种方法:
  * 1. Field f = doc.getField("name");
  *    f.stringValue();
  *  
  * 2. doc.get("name")
  */
 public static void printDocumentInfo(Document document){
  System.out.println("文件名为--------------" + document.get("name"));
  System.out.println("文件内容为-------------" + document.get("context"));
  System.out.println("文件大小为-------------" + NumberTools.stringToLong(document.get("size")));
  System.out.println("文件路径为-------------" + document.get("path"));
 }
}

自己写的lucene实例 java搜索引擎 apache开源项目lucene实例 实现对文件内容的搜索 java搜索引擎 立即下载

相关推荐

lucene实例

lucene实例lucene实例lucene实例lucene实例lucene实例

3) 第一章 初识Lucene:一个简单的实例

还是看代码来的直接:   1. 索引   import java.io.File; import java.io.FileReader; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.docu...

为中华之崛起而编码 129

ROS 2 Jazzy与Gazebo Harmonic仿真实战:从零搭建机器人仿真环境与高级应用

本文详细介绍了如何使用ROS 2 Jazzy和Gazebo Harmonic从零搭建机器人仿真环境,涵盖环境配置、传感器集成、多机器人协同和GPU加速优化等高级应用。通过实战案例和性能调优技巧,帮助开发者高效构建可靠的机器人仿真系统,提升开发效率。

h9j8k7l6m5n的博客 1217

[编程实例] Lucene Demo 小实例

首先是文件索引:先用爬虫爬几个页面放在特定目录下,我挑取了 google,baidu,yahoo 的代码来做例子:)Writer.javapublic class Writer ...{    public static void main(String[] args) throws Exception    ...{        //fileDir is the directory t

石头君专栏 1948

UART全功能测试指南:环路/DMA/RS485/硬件流控实战

UART(通用异步收发器)是嵌入式系统中最基础的串行通信接口,其核心原理基于起始位、数据位、校验位与停止位的异步帧结构,依赖精确的波特率时钟同步与采样重建机制。在工业与物联网场景中,UART不仅需保障基本通信可靠性,更需支持DMA卸载、RS485半双工自动方向控制、RTS/CTS硬件流控等进阶能力,以提升实时性、抗干扰性与系统资源效率。典型应用涵盖调试日志输出、传感器数据采集、Modbus RTU总线通信及固件空中升级。本指南聚焦UART外设测试实践,覆盖环路自检、DMA吞吐验证、RS485时序对齐、硬件流

weixin_42599908的博客 133

【WebLogic】Linux图形化界面安装WebLogic 14.1.2.0

Linux系统图形化界面安装WebLogic 14.1.2.0.0版本

cnskylee的博客 839

java lucence使用案例_2、Lucene 最简单的使用(小例子)

在了解了Lucene以后,我打算亲手来做一个Lucene的小例子,这个例子只是Lucene最简单的应用:使用Lucene实现标准的英文搜索;1、下载Lucene下载Lucene,到Lucene的官方下载http://lucene.apache.org/;2、新建项目新建一个Java Project 然后引入Lucene的jar 包:因为要实现的功能非常简单,所以Jar包只引入了一部分,当然Luce...

weixin_42502165的博客 633

VisionMaster 4.2.0安装

按照顺序安装。

XuXing_java的专栏 3790

Java轻量级全文检索引擎Lucene使用及优化

Lucene是一个开源的全文检索引擎工具包由Doug Cutting编写。它被设计用于实现全文搜索功能,即读入一堆文本文件并将其转换为易于搜索的数据结构。Lucene提供了一组简单而强大的API,使得索引和搜索过程变得非常方便。

BXA 5963

基于 Qt C++ 的 2D 动画制作工具

你可以修改它的中心坐标 (X, Y)、宽度 (W)、高度 (H),或点击 "选择颜色" 按钮改变其填充色。* **图形视图 (`QGraphicsView` 和 `QGraphicsScene`)**: 用于显示和编辑当前帧的内容。

寒寒豆豆软件公司的博客 114

基于STM32L4XX、HAL库的ICM-42670-P姿态传感器驱动程序设计

sprintf(buffer, "温度: %.1f °C\r\n\r\n", sensor_data.temperature);sprintf(buffer, "陀螺仪: X=%.2f Y=%.2f Z=%.2f rad/s\r\n",sprintf(buffer, "加速度: X=%.2f Y=%.2f Z=%.2f m/s²\r\n",sprintf(buffer, "开始校准IMU,请保持传感器静止...\r\n");sprintf(buffer, "读取传感器数据失败\r\n");

zhusl6688的博客 642

Lucene学习总结之一:全文检索的基本原理

一、总论根据http://lucene.apache.org/java/docs/index.html 定义:Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。那么什么叫做全文检索呢?这要从我们生活中的数据说起。我们生活中的数据总体分为两种:结构化数据 和非结构化数据 。结构化数据:

forfuture1978的专栏 6万+

uniapp - 实现APP后台持续定位+手机息屏后能持续上传位置信息数据,详解后台保活持续运行+手机锁屏保证后台持续/实时定位的解决方案及示例源码(完美兼容安卓android与苹果ios系统手机)

使用uniapp开发app实现后台保活定位能力,uniapp实时定位保活 息屏定位后台运行,uniapp APP实时定位高德 后台运行 支持锁屏息屏运行,持续获取定位信息,uniapp App端后台间隔时间发送定位功能实现,UniApp实现手机应用常活,固定时间内上传手机位置信息,后台(或锁屏)持续/实时定位的实现方案,uni-app后台持续定位,锁屏后能持续上传位置信息,实现后台定位持续无限制定位高德定位,百度定位,UniApp后台持续定位保如何在APP退到后台时保持定位服务,uniapp 切换app仍能

🏆 前端领域优质创作者 1万+

Lucene 简单小例子

package index; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.luce

yza3137957的专栏 778

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

lucene简单例子

建立索引import java.io.File;import java.io.FileReader;import java.io.Reader;import java.util.Date;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;i

crazyfisher的专栏 816

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

lucene 2.2 简单例子

package com.jiepu.lucene_23; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.luce

云守护的专栏 686

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

一个最简单的Lucene例子

一个最简单的Lucene例子,展示Lucene中的重要的几个用户接口类IndexWriter、Directory、Analyzer、Document、Field、IndexSearcher、Term、Query、TermQuery、TopDocs的用法。

王洪伟的专栏 1万+

一个简单的Lucene例子

/**  * 只是简单的一个关键词的搜索   * 应用范围狭窄 只能搜索txt文件  * 不支持中文  * 只能搜索独立的关键词  如关键词lucene   * 不能搜索出luceneinaction  lucene.txt等连载一起的字符关键词  */ pa

arvin的学习笔记 752

基于lucene的检索的简单的例子

需要的jar包: compile group: 'org.apache.lucene', name: 'lucene-core', version: '8.3.0' compile group: 'org.apache.lucene', name: 'lucene-queryparser', version: '8.3.0' compile group: 'org.apac...

大鹏的专栏 256

lucene 简单的例子

使用lucene-core-3.1.0.jar 一 创建索引 [java] view plaincopyprint? public class Indexer {      public static void main(String[] args) throws IOException {          // 保存索引文件的地方           Strin

张立钺 zly_2008的专栏 560

lucene学习01之简单小例子初步认识lucene

使用过关系型数据库()的同学

夢の殇 889

lucene入门简单的例子

package com.lzw.test; import java.io.File; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.

lzw390204054的专栏 490
上一篇: portlet 之间自动跳转
下一篇: javascript传值乱码解决方案
java_min
博客等级 码龄18年 61粉丝 161原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值