1.建索引:
FSDirectory fsDirectory = FSDirectory.open(Paths.get("F:/lucene/index")); StandardAnalyzer standardAnalyzer = new StandardAnalyzer(); IndexWriterConfig indexWriterConfig = new IndexWriterConfig(standardAnalyzer); indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE); IndexWriter indexWriter = new IndexWriter(fsDirectory, indexWriterConfig); Files.walkFileTree(Paths.get("F:/lucene/file"), new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { try (InputStream inputStream = Files.newInputStream(file)) { Document document = new Document(); Field pathField = new StringField("path", file.toString(), Field.Store.YES); document.add(pathField); StringField nameField = new StringField("name", file.getFileName().toString(), Field.Store.YES); document.add(nameField); //LongPoint modified = new LongPoint("modified", attrs.lastModifiedTime().toMillis()); //document.add(modified); StoredField storedField = new StoredField("modified", attrs.lastModifiedTime().toMillis()); document.add(storedField); TextField content = new TextField("content", new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8))); document.add(content); indexWriter.addDocument(document); return FileVisitResult.CONTINUE; } } }); indexWriter.close();
2.搜索:
FSDirectory fsDirectory = FSDirectory.open(Paths.get("F:/lucene/index")); DirectoryReader directoryReader = DirectoryReader.open(fsDirectory); IndexSearcher indexSearcher = new IndexSearcher(directoryReader); StandardAnalyzer standardAnalyzer = new StandardAnalyzer(); QueryParser queryParser = new QueryParser("content", standardAnalyzer); Query query = queryParser.parse("java OR springmvc"); /* Query query = new TermQuery(new Term("name", "dev-ecoupon-busi.log")); */ /* Query query = new PrefixQuery(new Term("name", "a")); */ /* SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date dateStart = simpleDateFormat.parse("2018-03-13 13:20:58"); Date dateEnd = simpleDateFormat.parse("2018-03-13 14:30:59"); Query query = LongPoint.newRangeQuery("modified", dateStart.getTime(), dateEnd.getTime()); */ TopDocs topDocs = indexSearcher.search(query, 100); for (ScoreDoc scoreDoc : topDocs.scoreDocs) { Document document = indexSearcher.doc(scoreDoc.doc); System.out.println(document.get("path") + ", " + DateFormatUtils.format(Long.valueOf(document.get("modified")), "YYYY-MM-dd HH:mm:ss") + ", " + document.get("name")); } fsDirectory.close(); directoryReader.close();