时间:

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. 题解报告:hdu 1848 Fibonacci again and again(尼姆博弈)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1848 Problem Description 任何一个大学生对菲波那契数列(Fibonacci num ...

  2. 数据连接类 这里采用mysql

    数据库通用操作类,自己参照几个通用类改写的,用起来还是蛮不错....  这里用的mysql 要是其他数据库自行更改下就好 public class MySqlHelper { public stati ...

  3. 百鸡百钱===百马百担====for循环嵌套

    package com.zuoye.test;//百鸡百钱5文钱可以买一只公鸡,3文钱可以买一只母鸡,1文钱可以买3只雏鸡.public class Baiji { public static voi ...

  4. dubbo之线程模型

    事件处理线程说明 如果事件处理的逻辑能迅速完成,并且不会发起新的IO请求,比如只是在内存中记个标识,则直接在IO线程上处理更快,因为减少了线程池调度. 但如果事件处理逻辑较慢,或者需要发起新的IO请求 ...

  5. 三维重建:SFM中BA的并行化

    1. BA在重建中的作用 借鉴于运动中重建的方法,BA引入SLAM过程,而传统的滤波方法引入BA是跟随闭环检测出现. 1.1 BA在滤波方法中的嵌入 PTAM 1.2 BA在闭环检测之后的应用 在三维 ...

  6. (转) Arcgis for js加载百度地图

    http://blog.csdn.net/gisshixisheng/article/details/44853709 概述: 在前面的文章里提到了Arcgis for js加载天地图,在本节,继续讲 ...

  7. Step by Step 开发dynamics CRM

    这里是作为开发贴的总结. 现在plugin和workflow系列已经终结. 希望这些教程能给想入坑的小伙伴一些帮忙. CRM中文教材不多, 我会不断努力为大家提供更优质的教程. Plugin 开发系列 ...

  8. PAT_A1119 Pre- and Post-order Traversals

    Source: PAT A1119 Pre- and Post-order Traversals (30 分) Description: Suppose that all the keys in a ...

  9. 【剑指Offer】31、从1到n整数中1出现的次数

      题目描述:   求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他 ...

  10. leetcode 188-maxProfit

    public static int maxProfit(int k, int[] prices) { if (0 >= k || null == prices || 1 >= prices ...