代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
读取文件按条件搜索条目
作者:
yunshuraosha
/ 发布于
2013/10/24
/
424
/lucene可以查找文本的,你把这一百万放在一个文本文件里,或几个文本里就可以了. // 建立索引: import java.io.File; import java.io.FileReader; import java.io.Reader; import org.apache.lucene.analysis.Analyzer; 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; /** * * @author archko */ public class IndexBuild { /** * 建立索引 * @param indexDir 索引存放的目录 * @param dataDir 需要索引的目录或文件 */ public static void index(File indexDir,File dataDir) { try { Analyzer analyzer=new StandardAnalyzer(); //有第三个参数时,索引文件必须要已经存在 IndexWriter indexWriter=new IndexWriter(indexDir,analyzer); long start=System.currentTimeMillis(); indexDocs(indexWriter,dataDir); indexWriter.optimize(); indexWriter.close(); long end=System.currentTimeMillis(); System.out.println("共花费"+(end-start)+"毫秒建立索引,索引文件存放在:"+indexDir. getCanonicalPath()); } catch (Exception e) { e.printStackTrace(); } } /** * 索引目录,使用递归扫描所有的目录文件,然后全部索引. * @param writer * @param dataDir 要索引的目录名 */ public static void indexDocs(IndexWriter writer,File dataDir) { if (dataDir.isDirectory()) { File[] dataFiles=dataDir.listFiles(); if (dataFiles!=null) { for (File file:dataFiles) { indexDocs(writer,file); } } } else /*if (dataDir.getName().endsWith(".txt")||dataDir.getName().endsWith( ".htm")||dataDir.getName().endsWith(".html")||dataDir.getName().endsWith( ".java")) {*/ { //上面是对特定的文件索引.比如TXT结尾的. indexFiles(dataDir,writer); } } /** * 索引文件 * @param dataFile 要索引的文件名 * @param writer */ private static void indexFiles(File dataFile,IndexWriter writer) { try { Document document=new Document(); Reader reader=new FileReader(dataFile); document.add(new Field("url",dataFile.getCanonicalPath(),Field.Store.YES, Field.Index.NO)); //这里是文件的内容,从reader来的. document.add(new Field("contents",reader)); //文件名就直接获得了,然后索引 document.add(new Field("name",dataFile.getName(),Field.Store.YES, Field.Index.NO)); writer.addDocument(document); } catch (Exception e) { } } } ------------------------------------------- import java.io.File; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.index.Term; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.Hits; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.TermQuery; import org.apache.lucene.store.FSDirectory; /** * * @author archko */ public class IndexSearch { public void search(String keyWords,File indexDir) { if (!indexDir.exists()) { return; } try { FSDirectory fSDirectory=FSDirectory.getDirectory(indexDir); IndexSearcher indexSearcher=new IndexSearcher(fSDirectory); //StandardAnalyzer是它自带的分词包,你可以下载自己要的.就在这里替换就行了. QueryParser parser=new QueryParser("contents",new StandardAnalyzer()); Query query=parser.parse(keyWords); Hits hits=indexSearcher.search(query); System.out.println("共有"+indexSearcher.maxDoc()+"条索引,命中"+hits.length()+"条"); for (int i=0;i<hits.length();i++) { int docId=hits.id(i); //这里的URL,NAME跟你建立索引时要一样 String url=hits.doc(i).get("url"); //String name=hits.doc(i).get("name"); System.out.println("url:**"+url); } } catch (Exception e) { } } public static void main(String[] args) { IndexBuild.index(new File("E:\\index"),new File("E:\\src")); IndexSearch search=new IndexSearch(); search.search("Observer",new File("E:\\index")); } }
试试其它关键字
搜索条目
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
yunshuraosha
贡献的其它代码
(
1
)
.
读取文件按条件搜索条目
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3