package lia.meetlucene;

import java.io.File;
import java.io.IOException;
import java.util.LinkedList; import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
//import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList; public class Unicode1 { static boolean numTime = false;
static boolean numText = false;
static String timeTmp = null;
static String textTmp = null; static void indexer(IndexWriter writer) throws CorruptIndexException, IOException
{
org.apache.lucene.document.Document doc = new org.apache.lucene.document.Document();
Field field = new Field("context",textTmp,Field.Store.YES,
Field.Index.ANALYZED);
doc.add(field); field = new Field("time",timeTmp,Field.Store.YES,
Field.Index.NOT_ANALYZED);
doc.add(field); writer.addDocument(doc);
//System.out.println("微博: " + textTmp+ " "+timeTmp);
} static void Dfs(NodeList nodecur,IndexWriter writer) {
for (int j = 0; j < nodecur.getLength(); j++) { if ("timestamp".equals(nodecur.item(j).getNodeName())) // 输出pass
{
//System.out.println("时间: " + nodecur.item(j).getTextContent());
timeTmp = nodecur.item(j).getTextContent();
numTime = true;
}
/*
* else if ("origtext".equals(nodecur.item(j).getNodeName()))
* System.out.println("原微博: " + nodecur.item(j).getTextContent());
*/
else if ("text".equals(nodecur.item(j).getNodeName())) // 输出code
{
//System.out.println("微博: " + nodecur.item(j).getTextContent());
textTmp = nodecur.item(j).getTextContent();
numText = true;
}
if(numText&&numTime)
try {
indexer(writer);
numText = false;
numTime = false;
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} NodeList childNodes = nodecur.item(j).getChildNodes();
Dfs(childNodes,writer);
}
} public static void main(String[] args) throws IOException { long a = System.currentTimeMillis(); // String dataDir ="C:/Users/Administrator/Desktop/xdj/tengxun/A__Vae";
//File dataDir = new File("C:/Users/Administrator/Desktop/xdj/tengxun");
//String indexDir = "C:/Users/Administrator/Desktop/xdj/suoyin";
File dataDir = new File("E:/xdj/tengxun");
String indexDir = "E:/xdj/tengxunsuoying";
Directory dir = FSDirectory.open(new File(indexDir)); IndexWriter writer = new IndexWriter(dir,
new SmartChineseAnalyzer(Version.LUCENE_20),
//new StandardAnalyzer(Version.LUCENE_30),
true,
IndexWriter.MaxFieldLength.UNLIMITED); LinkedList list = new LinkedList();
File file[] = dataDir.listFiles();
for (int i = 0; i < file.length; i++) {
if (file[i].isDirectory())
list.add(file[i]);
}
File tmp;
int num = 0;
while (!list.isEmpty()) { tmp = (File) list.removeFirst();
file = tmp.listFiles();
for (int i = 0; i < file.length; i++) {
System.out.println(file[i].getAbsolutePath()); Element element = null;
// documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)
DocumentBuilder db = null;
DocumentBuilderFactory dbf = null;
try {
// 返回documentBuilderFactory对象
dbf = DocumentBuilderFactory.newInstance();
// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
db = dbf.newDocumentBuilder();
// 得到一个DOM并返回给document对象
Document dt = db.parse(file[i]);
// 得到一个elment根元素
element = dt.getDocumentElement();
// 获得根节点
System.out.println("根元素:" + element.getNodeName());
// 获得根元素下的子节点 Dfs(element.getChildNodes(),writer); num++;
} catch (Exception e) {
e.printStackTrace();
}
} System.out.println(System.currentTimeMillis() - a + " " + num);
}
writer.close(); }
}

lucene 3.0.2 + 多文件夹微博数据(时间,微博)构建索引的更多相关文章

  1. Cocos2d-x 3.0新引擎文件夹结构

    Cocos2d-x 3.0新引擎文件夹结构 2014年4月29日  Cocos2d-x 3.0学习 作为一个Cocos2d-x的菜鸟,我倒是挺愿意关注不同版本号之间的差别,Cocos2d-x 3.0自 ...

  2. matrix-gui-2.0 将javascript文件夹改成js文件夹

    /******************************************************************************** * matrix-gui-2.0 将 ...

  3. Tomcat7.0设置虚拟文件夹

    (1)眼下,我们的网站网站都是放在默认的文件夹下:tomcat/webapps/下的.可是,在某种情况下.我们须要把网站放到其它的文件夹,比方:tomcat所在磁盘的空间不足: 或者为了项目的统一管理 ...

  4. Mysql5.7和8.0版本的文件夹版安装教程(整合版,超详细)

    安装Mysql(5.7版本) 下载地址在这里可以自选版本,找到合适的版本进行下载 解压安装包 配置环境变量 win+r 输入 sysdm.cpl 点击高级 点击环境变量 新建一个系统变量 变量名为MY ...

  5. c#创建目录和文件夹,数据写入并生成txt文件

    c#创建目录: // 获取程序的基目录.System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径.System.Diagnostics.Pro ...

  6. bat如何实现自动创建文件夹(以当前时间命名)

    先比较直接的查看当前的日期和时间:(或者cmd中直接输入date,time查看) @echo off color 0a set dt=%date%%time% echo %dt% pause 1.使用 ...

  7. python 检测文件夹的数据变动

    from watchdog.observers import Observerfrom watchdog.events import *import time class FileEventHandl ...

  8. Hadoop MultipleOutputs 结果输出到多个文件夹 出现数据不全,部分文件为空

    如题:出现下图中的情况(设置reduceNum=5) 感觉很奇怪,排除了很久,终于发现是一个第二次犯的错误:丢了这句 this.mOutputs.close(); 加上这句,一切恢复正常!

  9. python os 命令,及判断文件夹是否存在

    使用前 import os导入模块   os模块: os.sep     可以取代操作系统特定的路径分割符 os.linesep  字符串给出当前平台使用的行终止符.例如,Windows使用'\r\n ...

随机推荐

  1. mysql varchar

    2013年9月13日 14:58:43 MYSQL的varchar数据类型 先说结论: 如果设置字段长度为30,字符编码为utf8,那么一个汉字算一个字符,一个数字算一个字符,一个字母也算一个字符 版 ...

  2. Ubuntu 14.04的vim编辑器配置Python开发环境

    #1 $ sudo apt-get install exuberant-ctags vim-scripts $ vim-addons install taglist #2 到:http://www.v ...

  3. Greedy:Fence Repair(POJ 3252)

    Fence Repair 问题大意:农夫约翰为了修理栅栏,要将一块很长的木块切割成N块,准备切成的木板的长度为L1,L2...LN,未切割前的木板的长度恰好为切割后木板的长度的总和,每次切断木板的时候 ...

  4. ASP.Net和新对象之context.Server

    描述 Server是一个HttpServerUtility类型的对象,不是一个类名 1.获取服务器上的绝对路径文件名tring ss = context.Server.MapPath("~/ ...

  5. 前端代理nproxy

    一.场景/用途 前端代理的用途,相信大家都清楚.应用场景很多,如—— . 将线上的静态资源文件(JS.CSS.图片)替换为本地相应的文件,来调试线上(代码都被压缩过)的问题: . 本地开发过程,当后端 ...

  6. onsubmit="return false;"报错

    <form id="formpersonal" method="post" onsubmit="return false;">. ...

  7. php 面向对象之继承、多态和静态方法

    <?php //继承:子类可以继承父类的一切 //特点:单继承 //父类 class Ren { public $name; public $sex; public $yuyan; functi ...

  8. Zookeeper笔记(四)Zookeeper在Dubbo中的应用

    Zookeeper在Dubbo中的应用 Dubbo的架构 节点角色说明: Provider: 暴露服务的服务提供方.Consumer: 调用远程服务的服务消费方.Registry: 服务注册与发现的注 ...

  9. linux&mac下查看端口被哪个进程占用

    mac :   lsof -i:8080 linux : neststat -anltp | grep 8080

  10. C#控制管理VisualSVN Server

    VisualSVN Server可以用WMI接口管理(Windows Management Instrumentation). VisualSVN Server安装的计算机中,位于%VISUALSVN ...