知识大全 如何使用Lucene对html文件进行索引
Posted 文件
篇首语:春衣少年当酒歌,起舞四顾以笑和。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 如何使用Lucene对html文件进行索引相关的知识,希望对你有一定的参考价值。
如何使用Lucene对html文件进行索引 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
我修改了lucene的demo包的IndexHTML类 使其可以被其他Java类调用 IndexHTML类 import apache lucene analysis standard StandardAnalyzer; import apache lucene document Document; import apache lucene index IndexReader; import apache lucene index IndexWriter; import apache lucene index Term; import apache lucene index TermEnum; import java io File;import java util Date; import java util Arrays; //还需调用demo的其他类 import apache lucene demo; /** * Create file index for searching * @author tyrone * */public class IndexHTML private String DocsPath=null; /** * the path for index file; */ private String IndexFilePath=null; /** * true during deletion pass */ private boolean deleting = false; /** * existing index */ private IndexReader reader; /** * new index being built */ private IndexWriter writer; /** * document id iterator */ private TermEnum uidIter; private void indexDocs(File file)throws Exception if (file isDirectory()) // if a directory String[] files = file list(); // list its files Arrays sort(files); // sort the files for (int i = ; i < files length; i++) // recursively index them this indexDocs(new File(file files[i])); else if (file getPath() endsWith(l ) || // l files file getPath() endsWith( ) || // files file getPath() endsWith( txt )) // index txt files if (this uidIter != null) String uid = HTMLDocument uid(file); // construct uid for doc while (uidIter term() != null && uidIter term() field() == uid && uidIter term() text(pareTo(uid) < ) if (deleting) // delete stale docs System out println( deleting + HTMLDocument uid url(uidIter term() text())); reader delete(uidIter term()); uidIter next(); if (uidIter term() != null && uidIter term() field() == uid && uidIter term() text(pareTo(uid) == ) uidIter next(); // keep matching docs else if (!deleting) // add new docs Document doc = HTMLDocument Document(file); System out println( adding + doc get( url )); writer addDocument(doc); else // creating a new index Document doc = HTMLDocument Document(file); System out println( adding + doc get( url )); writer addDocument(doc); // add docs unconditionally return; /** * Walk directory hierarchy in uid order while keeping uid iterator from * existing index in sync Mismatches indicate one of: * (a) old documents to be deleted; * (b) unchanged documents to be left alone; * or (c) new documents to be indexed */ private void indexDocs(File file String index boolean create) throws Exception if (!create) // incrementally update reader = IndexReader open(index); // open existing index uidIter = reader terms(new Term( uid )); // init uid iterator this indexDocs(file); if (deleting) // delete rest of stale docs while (uidIter term() != null && uidIter term() field() == uid ) System out println( deleting + HTMLDocument uid url(uidIter term() text())); reader delete(uidIter term()); uidIter next(); deleting = false; uidIter close(); // close uid iterator reader close(); // close existing index else // don t have exisiting this indexDocs(file); /** * if create=true create a new index else refresh old index * @param create */ public void run(boolean create) try String index = index ; File root = null; if (this IndexFilePath!=null) // index file path index = this IndexFilePath; if (this DocsPath==null) System out println( root directory is not set ); return; root = new File(this DocsPath); Date start = new Date(); /** * not create then maintenance */ if (!create) // delete stale docs this deleting = true; this indexDocs(root index create); writer = new IndexWriter(index new StandardAnalyzer() create); writer maxFieldLength = ; this indexDocs(root index create); // add new docs System out println( Optimizing index ); writer optimize(); writer close(); Date end = new Date(); System out print(end getTime() start getTime()); System out println( total milliseconds ); catch (Exception e) System out println( caught a + e getClass() + \\n with message: + e getMessage()); return; /** * @return Returns the IndexFilePath */ public String getIndexFilePath() return IndexFilePath; /** * @param IndexFilePath The IndexFilePath to set */ public void setIndexFilePath(String property ) this IndexFilePath = property ; /** * @return Returns the DocsPath */ public String getDocsPath() return DocsPath; /** * @param DocsPath The DocsPath to set */ public void setDocsPath(String property ) this DocsPath = property ; /** * test * @param args */ public static void main(String[] args) IndexHTML ih=new IndexHTML(); ih setDocsPath( D:\\\\MyProject\\\\colimas\\\\clms doc \\\\ ); ih setIndexFilePath( D:\\\\MyProject\\\\colimas\\\\index ); ih run(true); 运行后生成 个文件_ i cfs deletable segments 搜索文件类 /* * Created on / / * * TODO To change the template for this generated file go to * Window Preferences Java Code Style Code Templates */package limas search query; /** * @author tyrone * * TODO To change the template for this generated type ment go to * Window Preferences Java Code Style Code Templates */public class HitsHTMLDoc private String Title; priva cha138/Article/program/Java/ky/201311/28449相关参考
Lucene在多个索引上进行搜索 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 代码如下 vi
索引文件的操作 检索操作 检索分两步进行 ①将外存上含有索引区的页块送人内存查找所需记录的物理地址 ②将含有该记录的页块送人内存 注意 ①索引表不大时索引表可一次读入内存在索引文件中检
索引文件构成 索引文件 索引文件由主文件和索引表构成 ①主文件文件本身 ②索引表在文件本身外建立的一张表它指明逻辑记录和物理记录之间的一一对应关系 索引表组成 索引表由若干索引项组成一
文件-索引顺序文件-VSAM文件(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! VSAM文
文件-索引顺序文件-ISAM文件(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ISAM文
文件-索引顺序文件-ISAM文件(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ISAM文
文件-索引顺序文件-VSAM文件(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! VSAM文
倒排文件 倒排文件的组织方式和特点 倒排文件和多重表文件不同在次关键字索引中具有相同次关键字的记录之间不进行链接而是列出具有该次关键字记录的物 理地址 倒排文件中的次关键字索引称做倒排表倒
.在主文件外再建立索引表指示关键字及其物理记录的地址间一一对应关系这种由索引表和主文件一起构成的文件称为索引文件索引表依关键字有序主文件若按关键字有序称为索引顺序文件否则称为索引非顺序文件(通常简
顺序文件的插入删除和修改只能通过复制整个文件实现 索引文件的组织方式通常是在主文件之外建立一张索引表指明逻辑记录和物理记录之间一一对应的关系它和主文件一起构成索引文件 索引非顺序文件中的索引表