3089589

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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"));
        }

    }
}
 

 

posted on 2013-03-26 09:25  liangge0218  阅读(118)  评论(0)    收藏  举报