lucene3.5示例
lucene中,很多方法都不推荐使用了,写个示例
?
public class IndexerCreate {private static Analyzer luceneAnalyzer = new IKAnalyzer();private static Directory indexDir = new RAMDirectory();// private static Directory indexDir;// static{// try {// indexDir = new SimpleFSDirectory(new File("D:/indexer"));// } catch (IOException e) {// e.printStackTrace();// }// } public static void main(String[] args) throws Exception { create(); search(); }public static void create() throws Exception{ IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_35,luceneAnalyzer); config.setOpenMode(OpenMode.CREATE); IndexWriter indexWriter = new IndexWriter(indexDir,config); Document doc1 = new Document(); doc1.add(new Field("id","1",Store.YES,Index.ANALYZED)); doc1.add(new Field("name","liangge",Store.YES,Index.ANALYZED)); doc1.add(new Field("content","我是中国人",Store.YES,Index.ANALYZED)); Document doc2 = new Document(); doc2.add(new Field("id","2",Store.YES,Index.ANALYZED)); doc2.add(new Field("name","liangge is a girl",Store.YES,Index.ANALYZED)); doc2.add(new Field("content","liangge am a good girl",Store.YES,Index.ANALYZED));//删除重复索引// String id1 = doc1.getFieldable("id").stringValue();// Term term1 = new Term("id",id1);// indexWriter.deleteDocuments(term1);// String id2 = doc2.getFieldable("id").stringValue();// Term term2 = new Term("id",id2);// indexWriter.deleteDocuments(term2); indexWriter.addDocument(doc1); indexWriter.addDocument(doc2); indexWriter.close(); }public static void search() throws Exception{ String queryString = "liangge"; String[] fields = {"name","content"}; QueryParser queryParser = new MultiFieldQueryParser(Version.LUCENE_35, fields, luceneAnalyzer); Query query = queryParser.parse(queryString);// IndexReader reader = IndexReader.open(FSDirectory.open(new File(indexPath))); IndexReader reader = IndexReader.open(indexDir); IndexSearcher searcher = new IndexSearcher(reader); TopScoreDocCollector results = TopScoreDocCollector.create(2, false); searcher.search(query, results); TopDocs topDocs = results.topDocs(0, 1); System.out.println(topDocs.totalHits);for(ScoreDoc scoreDoc : topDocs.scoreDocs){ Document doc = searcher.doc(scoreDoc.doc); System.out.println(doc.get("name")); System.out.println(doc.get("content")); } }}?
?