lucene

 @Test
    public void createIndex() throws Exception{
        //索引库存放的位置,也可以放在硬盘
        Directory directory= FSDirectory.open(new File("C:\\Users\\Lemon\\Desktop\\index"));
        //标准的分词器
        Analyzer analyzer =new StandardAnalyzer();
        //创建输出流write
        IndexWriterConfig config =new IndexWriterConfig(Version.LUCENE_4_10_2,analyzer);
        IndexWriter indexWriter = new IndexWriter(directory,config);

        indexWriter.commit();

        //创建Filed域
        File f=new File("C:\\Users\\Lemon\\Desktop\\aaa");
        //找到下面的所有待搜索的文件
        File[] listFiles=f.listFiles();
        for (File file:listFiles){
            //创建文档对象
            Document document=new Document();
            //文件名称
            String file_name=file.getName();
            Field fileNameFiled=new TextField("fileName",file_name, Field.Store.YES);
            //文件大小
            long file_size= FileUtils.sizeOf(file);
            Field fileSizeField=new LongField("fileSize",file_size,Field.Store.YES);
            //文件路径
            String file_path=file.getPath();
            Field filePathField=new StoredField("filePath",file_path);
            //文件内容
            String file_content = FileUtils.readFileToString(file,"utf8");
            Field fileContentField=new TextField("fileContent",file_content, Field.Store.YES);

            //保存到文件对象里
            document.add(fileNameFiled);
            document.add(fileSizeField);
            document.add(filePathField);
            document.add(fileContentField);

            //写到索引库
            indexWriter.addDocument(document);
        }
        //关闭
        indexWriter.close();
    }

    /**
     * 查询索引
     * @throws Exception
     */
    @Test
    public void searchIndex() throws Exception{
        //第一步,查询准备工作,创建Directory对象
        Directory dir = FSDirectory.open(new File("C:\\Users\\Lemon\\Desktop\\index"));
        //创建IndexReader对象
        IndexReader reader= DirectoryReader.open(dir);
        //创建IndexSearch对象
        IndexSearcher search =new IndexSearcher(reader);

        //第二步,闯将查询条件对象
        TermQuery query=new TermQuery(new Term("fileContent","ups"));
        //第三步:执行查询,参数(1:查询条件对象,2:查询结果返回的最大值)
        TopDocs topDocs=search.search(query,10);
        //第四步:处理查询结果
        //输出结果数量
        System.out.print("查询结果数量:"+topDocs.totalHits);
        //取得结果集
        ScoreDoc[] scoreDocs=topDocs.scoreDocs;
        for (ScoreDoc scoreDoc:scoreDocs){
            System.out.println("当前doc得分:"+scoreDoc.score);
            //根据文档对象ID取得文档对象
            Document doc=search.doc(scoreDoc.doc);
           System.out.println("文件名称:"+doc.get("fileName"));
            System.out.println("文件路径:"+doc.get("filePath"));
            System.out.println("文件大小:"+doc.get("fileSize"));
            System.out.println("文件大小:"+doc.get("fileContent"));
            System.out.println("=======================================");
        }
        //关闭IndexReader对象
        reader.close();
    }

    @Test
     public void testDeleteAllIndex() throws Exception {
        Analyzer analyzer = new IKAnalyzer();
        TokenStream tokenStream = analyzer.tokenStream("","the spring is vary desk");
        CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
        tokenStream.reset();
        while(tokenStream.incrementToken()){
            System.out.println(charTermAttribute.toString());
        }
        tokenStream.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值