摸索lucene的简要代码

    技术2022-05-11  63

    1.indexing /**  *  */ package org.apache.lucene.test; import java.io.File; import java.io.FileReader; import java.io.IOException; 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 LJW  *  */ public class Indexer {     /**      * @param args      */     public static void main(String[] args) {         // TODO Auto-generated method stub         File indexDir = new File(Constant.indexDirStr);         File dataDir = new File(Constant.dataDirStr);         IndexWriter writer = null;         try {             writer = new IndexWriter(indexDir, new StandardAnalyzer(), true);             writer.setUseCompoundFile(false);                         index(writer,dataDir);                         int indexCount=writer.docCount();                         writer.optimize();                         writer.close();         } catch (IOException e) {             // TODO Auto-generated catch block             System.out.println("" + e.toString());             e.printStackTrace();         }     }     public static void index(IndexWriter writer, File dataDir) {         File[] files = dataDir.listFiles();         for (int i = 0; i < files.length; i++) {             File f = files[i];             try {                 if (!f.isDirectory() && f.getName().endsWith(".txt")) {                     if (f.isHidden() || !f.exists() || !f.canRead()) {                         return;                     }                     System.out.println("Index...." + f.getCanonicalPath());                     Document doc = new Document();                     doc.add(Field.Text("content", new FileReader(f)));                     doc.add(Field.Keyword("path", f.getCanonicalPath()));                     writer.addDocument(doc);                 }             } catch (IOException e) {                 // TODO Auto-generated catch block                 System.out.println("" + e.toString());                 e.printStackTrace();             }         }     } }  2.searcher /**  *  */ package org.apache.lucene.test; import java.io.File; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; 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.store.Directory; import org.apache.lucene.store.FSDirectory; /**  * @author LJW  *  */ public class Searcher {     /**      * @param args      */     public static void main(String[] args) {         // TODO Auto-generated method stub         File indexDir=new File(Constant.indexDirStr);                 if(!indexDir.exists()||!indexDir.isDirectory())         {             System.out.println(indexDir+" does not exists or is not a directory !");             return;         }         try {             search(indexDir,Constant.querystr);         } catch (Exception e) {             // TODO Auto-generated catch block             e.printStackTrace();             System.out.println(e.toString());         }             }     public static void search(File indexDir,String querystr)throws Exception     {         Directory fsdir=FSDirectory.getDirectory(indexDir, false);         IndexSearcher is=new IndexSearcher(fsdir);                 Query q=QueryParser.parse(querystr, "content", new StandardAnalyzer());                 Hits hits=is.search(q);                 System.out.println("Found "+hits.length()+" documents matched the /""+querystr+"/"");                 for(int i=0;i<hits.length();i++)         {             Document doc=hits.doc(i);             System.out.println(doc.getField("path"));         }     } } 3.Constant /**  *  */ package org.apache.lucene.test; /**  * @author LJW  *  */ public class Constant {     public static final String indexDirStr = "D://workspace//testdata//indexdir";     public static final String dataDirStr = "D://workspace//testdata";     public static final String querystr="student"; }

    最新回复(0)