Lucene 7.2.1 入门

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();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值