知识大全 如何使用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在多个索引上进行搜索

Lucene在多个索引上进行搜索  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  代码如下  vi

知识大全 文件 - 索引文件(二)

  索引文件的操作  检索操作  检索分两步进行  ①将外存上含有索引区的页块送人内存查找所需记录的物理地址  ②将含有该记录的页块送人内存  注意  ①索引表不大时索引表可一次读入内存在索引文件中检

知识大全 文件 - 索引文件(一)

  索引文件构成  索引文件  索引文件由主文件和索引表构成  ①主文件文件本身  ②索引表在文件本身外建立的一张表它指明逻辑记录和物理记录之间的一一对应关系  索引表组成  索引表由若干索引项组成一

知识大全 文件 - 索引顺序文件 - VSAM文件 (二)

文件-索引顺序文件-VSAM文件(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  VSAM文

知识大全 文件 - 索引顺序文件 - ISAM文件(一)

文件-索引顺序文件-ISAM文件(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ISAM文

知识大全 文件 - 索引顺序文件 - ISAM文件(二)

文件-索引顺序文件-ISAM文件(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ISAM文

知识大全 文件 - 索引顺序文件 - VSAM文件 (一)

文件-索引顺序文件-VSAM文件(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  VSAM文

知识大全 文件 - 多关键字文件 - 倒排文件

  倒排文件  倒排文件的组织方式和特点  倒排文件和多重表文件不同在次关键字索引中具有相同次关键字的记录之间不进行链接而是列出具有该次关键字记录的物  理地址  倒排文件中的次关键字索引称做倒排表倒

知识大全 数据结构考研分类复习真题 第十一章 答案[4]

  .在主文件外再建立索引表指示关键字及其物理记录的地址间一一对应关系这种由索引表和主文件一起构成的文件称为索引文件索引表依关键字有序主文件若按关键字有序称为索引顺序文件否则称为索引非顺序文件(通常简

知识大全 09年自考《数据结构》各章要点二[12]

  顺序文件的插入删除和修改只能通过复制整个文件实现  索引文件的组织方式通常是在主文件之外建立一张索引表指明逻辑记录和物理记录之间一一对应的关系它和主文件一起构成索引文件  索引非顺序文件中的索引表