lucene--3.创建索引

本文介绍如何使用Lucene创建索引库,包括创建IndexWriter对象、定义文档内容及字段属性等步骤,并提供了完整的示例代码。此外还介绍了索引库的存放位置设置及Luke工具的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1      功能一:创建索引库

使用indexwriter对象创建索引

1.1    实现步骤

创建一个java工程,并导入jar包。

第一步:创建一个indexwriter对象。

1.1指定索引库的存放位置Directory对象

1.2指定一个分析器,对文档内容进行分析。

第二步:创建document对象。

第三步:创建field对象,将field添加到document对象中。

第四步:使用indexwriter对象将document对象写入索引库,此过程进行索引创建。并将索引和document对象写入索引库。

第五步:关闭IndexWriter对象。

 

1.2    代码实现

   // 创建索引
   @Test
   public void testIndex() throws Exception {
//   创建一个java工程,并导入jar包。
//    第一步:创建一个indexwriter对象。
//    1.1指定索引库的存放位置Directory对象 F:\lucene\index
      Directory directory = FSDirectory.open(new File("F:\\lucene\\index"));
      //Directory directory = new RAMDirectory();    //索引库还可以存放到内存中
//    1.2创建indexwriterCofig对象
//    第一个参数:Lucene的版本信息,可以选择对应的lucene版本也可以使用LATEST
//    第二根参数:分析器对象(定一个标准分析器,对文档内容进行分析。)
      Analyzer analyzer = new StandardAnalyzer();
      IndexWriterConfig config = new IndexWriterConfig(Version.LATEST, analyzer);
      IndexWriter indexWriter = new IndexWriter(directory, config);//创建indexwriter对象

      //原始文档的路径F:\javaeg\index\searchsource
      File dir = newFile("F:\\lucene\\searchsource");
      for (Filef : dir.listFiles()) {
         String fileName = f.getName();//文件名
         String fileContent = FileUtils.readFileToString(f);//文件内容
         String filePath = f.getPath();//文件路径
         long fileSize  =FileUtils.sizeOf(f);//文件的大小

//       第三步:创建文件名域 //第一个参数:域的名称   //第二个参数:域的内容 //第三个参数:是否存储
         Field fileNameField = new TextField("fileName",fileName, Store.YES);
         Field fileContentField = new TextField("fileContent",fileContent, Store.YES);//文件内容域
         Field filePathField = new StoredField("filePath",filePath);//文件路径域(不分析、不索引、只存储)
         Field fileSizeField = new LongField("fileSize",fileSize, Store.YES);//文件大小域

//       第二步:创建document对象。
         Document document = new Document();
         document.add(fileNameField);//将field添加到document对象中。
         document.add(fileContentField);
         document.add(filePathField);
         document.add(fileSizeField);

         //第四步:使用indexwriter对象将document对象写入索引库,此过程进行索引创建。并将索引和document对象写入索引库。
         indexWriter.addDocument(document);
      }
//   第五步:关闭IndexWriter对象。
      indexWriter.close();
   }

2      Api的使用

2.1    存放位置Directory对象

第一步:创建一个indexwriter对象。
//    1.1指定索引库的存放位置Directory对象 F:\javaeg\index\lucene
      Directory directory = FSDirectory.open(new File("F:\\javaeg\\index\\lucene"));
      //Directory directory = new RAMDirectory();    //索引库还可以存放到内存中 

2.2    Field域的属性

2.2.1  概念

是否分析:是否对域的内容进行分词处理。前提是我们要对域的内容进行查询。

是否索引:将Field分析后的词或整个Field值进行索引,只有索引方可搜索到。

比如:商品名称、商品简介分析后进行索引,订单号、身份证号不用分析但也要索引,这些将来都要作为查询条件。

是否存储:将Field值存储在文档中,存储在文档中的Field才可以从Document中获取

比如:商品名称、订单号,凡是将来要从Document中获取的Field都要存储。

 

2.2.2  是否存储的标准

是否存储的标准:是否要将内容展示给用户

 

3      使用Luke工具查看索引文件

3.1    选择索引库

 

3.2    概述overview

 

3.3    文档document

 

3.4    搜索search

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值