时间:

2015/3/18

杨鑫newlife



对于文档的预处理后。就要開始使用Lucene来处理相关的内容了。

这里使用的Lucene的过程例如以下:

首先要为处理对象机那里索引

二是构建查询对象

三是在索引中查找

这里的代码是处理创建索引的部分

代码:

package ch2.lucenedemo.process;





import java.io.BufferedReader;

import java.io.File;

import java.io.FileReader;

import java.io.IOException;





import jeasy.analysis.MMAnalyzer;





import org.apache.lucene.document.Document;

import org.apache.lucene.document.Field;

import org.apache.lucene.document.Field.Index;

import org.apache.lucene.index.IndexWriter;

public class IndexProcessor {

//成员变量。存储创建的索引文件存放的位置

private String INDEX_STORE_PATH = "E:\\Lucene项目\\索引文件夹";



//创建索引

public void createIndex(String inputDir){

try

{

System.out.println("程序開始执行。正在创建索引->->->->->");

IndexWriter writer = new IndexWriter(INDEX_STORE_PATH, new MMAnalyzer(), true);



File filesDir = new File(inputDir);



//取得全部须要建立索引的文件数组

File[] files = filesDir.listFiles();



//遍历数组

for(int i = 0; i < files.length; i++){



//获取文件名称

String fileName = files[i].getName(); 



//推断文件是否为txt类型的文件

if(fileName.substring(fileName.lastIndexOf(".")).equals(".txt")){



//创建一个新的Document

Document doc = new Document();

System.out.println("正在为文件名称创建索引->->->->");

//为文件名称创建一个Field

Field field = new Field("filename", files[i].getName(), Field.Store.YES, Field.Index.TOKENIZED);

doc.add(field);

System.out.println("正在为文件内容创建索引->->->->");

//为文件内容创建一个Field

field = new Field("content", loadFileToString(files[i]), Field.Store.NO, Field.Index.TOKENIZED);

doc.add(field);



//把Document增加到IndexWriter

writer.addDocument(doc);



}



}

writer.close();

System.out.println("程序创建结束->->->->");

}catch(Exception e){

e.printStackTrace();

}



}



/*

* 从文件里把内容读取出来,全部的内容就放在一个String中返回

* */

public String loadFileToString(File file){

try{

BufferedReader br = new BufferedReader(new FileReader(file));

StringBuffer sb = new StringBuffer();

String line= br.readLine();

while(line != null){

sb.append(line);

line = br.readLine();

}

br.close();

return sb.toString();

}catch(IOException e){

e.printStackTrace();

return null;

}

}



public static void main(String[] args){

IndexProcessor ip = new IndexProcessor();

ip.createIndex("E:\\Lucene项目\\目标文件");



}



}

使用Lucene对预处理后的文档进行创建索引(可执行)的更多相关文章

  1. lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3

    前言:上一章中我们已经实现了索引器的创建,但是我们没有索引文档,本章将会讲解如何生成字段.创建索引文档,给字段加权以及保存文档到索引器目录 luncene5.5.3集合jar包下载地址:http:// ...

  2. ELK学习总结(2-4)bulk 批量操作-实现多个文档的创建、索引、更新和删除

    bulk 批量操作-实现多个文档的创建.索引.更新和删除 ----------------------------------------------------------------------- ...

  3. [翻译] DTCoreText 从HTML文档中创建富文本

    DTCoreText 从HTML文档中创建富文本 https://github.com/Cocoanetics/DTCoreText 注意哦亲,DTRichTextEditor 这个组件是收费的,不贵 ...

  4. es删除文档或者删除索引

    es删除文档或者删除索引 学习了:https://www.imooc.com/video/15771 删除文档: DELETE http://127.0.0.1:9200/people/man/1 删 ...

  5. js 文档加载完成之后执行 备用

    //文档加载完成之后执行 (function(){ var _globeCallback; window.$$ = function(callback){ _globeCallback = callb ...

  6. MongoDB 大数据技术之mongodb中在嵌套子文档的文档上面建立索引

    一.给collection objectid赋自定义的值 MongoDB Enterprise > db.testid.insert({_id:{imsi:"4567890123&qu ...

  7. matlab2018a安装后帮助文档打不开解决方法

    安装matlab2018a破解版后,帮助文档提示需要许可证问题(破解版没有可用许可证): 解决方法是把文档设置为离线即可(预设---->帮助---->安装在本地---->小窗口)

  8. 微信小程序API 文档快速参考索引

    内容那么多,这个页面到底做了什么? 第一:解决微信文档APi文档使用不便: 第二:解决了内容搜索与索引:—— 最好是写成全文索引文档,但是比较需要时间,而且更新是一件麻烦的事:所以以下是直接 连接官网 ...

  9. Linux命令学习之路——文档连接创建:ln

    使用权限:所有角色 使用方式:ln [ -options ] source target 作用:建立源文件与目标文件之间的连接 注意点: 1.连接分为硬连接和软连接,其中硬连接不能对目录做硬连接,且不 ...

随机推荐

  1. POJ 1236 Tarjan算法

    这道题认真想了想.. [ 题目大意:有N个学校,从每个学校都能从一个单向网络到另外一个学校,两个问题 1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件. 2:至少需要添加几条 ...

  2. django模型层(二)

    多表操作 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对 ...

  3. 基于bootstarp的Dailog

    oaoDailog开发帮助 1.         帮助文档关键字 boostrap模态框oaoDailog 2.         使用场景 当网页上点击某个按钮需要给予用户提示确认,用户点击确认按钮才 ...

  4. js 字符串 处理方法

    charAt() 返回指定索引位置的字符 charCodeAt() 返回指定索引位置字符的 Unicode 值 concat() 连接两个或多个字符串,返回连接后的字符串 fromCharCode() ...

  5. 学习廖雪峰的Python教程之第一个Python程序

    一.命令行模式和Python交互模式的区分 命令行模式: Python交互模式 二.文本编辑器 1.绝对不能用Word和Windows自带的记事本.Word保存的不是纯文本文件,而记事本会自作聪明地在 ...

  6. 在MFC中使用Cstring

    此文介绍了关于MFC使用CString的资料,可一参考一下. 转自于VC知识库:http://www.vckbase.com/index.php/wv/829 通过阅读本文你可以学习如何有效地使用 C ...

  7. 浅谈Json数据格式

    我们先来看下w3cschool对json的定义: JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XM ...

  8. BZOJ 1594: [Usaco2008 Jan]猜数游戏 线段树 + 思维 + 二分

    Code: #include<bits/stdc++.h> #define maxn 3000000 using namespace std; void setIO(string s) { ...

  9. 修复Thinkphp框架5.0和5.1版本的远程代码执行安全漏洞

    由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞.最直接的影响为index.php直接被篡改成首页html的内容! 5.0版本 thinkphp/libr ...

  10. python 从Excel中取值

    import openpyxl from openpyxl import load_workbook def open_file(file_path): workbook = load_workboo ...