@SuppressWarnings("resource") public static void main(String[] args) throws CorruptIndexException, Exception { // Lucene Document的域名 String fieldName = "text"; // 检索内容 String text = "的数据库的设计可怜的"; // 实例化IKAnalyzer分词器 Analyzer analyzer = new IKAnalyzer(); Directory directory = FSDirectory.open(new File("D:/luce/index")); IndexWriter iwriter = null; IndexReader ireader = null; IndexSearcher isearcher = null; // 建立内存索引对象 // directory = new RAMDirectory(); // 配置IndexWriterConfig IndexWriterConfig iwConfig = new IndexWriterConfig(Version.LUCENE_34, analyzer); iwConfig.setOpenMode(OpenMode.CREATE_OR_APPEND); iwriter = new IndexWriter(directory, iwConfig); // 写入索引 Document doc = new Document(); doc.add(new Field("ID", "10000", Field.Store.YES, Field.Index.NOT_ANALYZED)); doc.add(new Field(fieldName, text, Field.Store.YES, Field.Index.ANALYZED)); iwriter.addDocument(doc); iwriter.close(); // 搜索过程********************************** //实例化搜索器 ireader = IndexReader.open(directory); isearcher = new IndexSearcher(ireader); String keyword = "dsfdjksjflkds"; // 使用QueryParser查询分析器构造Query对象 QueryParser qp = new QueryParser(Version.LUCENE_34, fieldName, analyzer); qp.setDefaultOperator(QueryParser.AND_OPERATOR); Query query = qp.parse(keyword); // 搜索相似度最高的5条记录 TopDocs topDocs = isearcher.search(query, 5); System.out.println("命中:" + topDocs.totalHits); // 输出结果 ScoreDoc[] scoreDocs = topDocs.scoreDocs; for (int i = 0; i < topDocs.totalHits; i++) { Document targetDoc = isearcher.doc(scoreDocs[i].doc); System.out.println("内容:" + targetDoc.toString()); // System.out.println(scoreDocs[i].); } }