如何创建Lucene索引

本文介绍了如何利用Lucene的IndexWriter创建索引,将其比喻为数据库中的记录操作。IndexWriter是创建索引的核心,需要指定索引位置和分词器。Document代表数据库的一条记录,由多个Field组成,每个Field对应索引的不同列,用于存储具体信息。

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

需要用到的IPA:
IndexWriter:这个是索引创建的中心组件,通过他就可以创建索引,它是生成索引的过程(与读取和搜索索引没有关系)。初始化化它时,需要传递的两个参数。第一个是参数是指定索引创建的位置,第二是参数是配置分词器。
Document:这个文本相当于数据库中的一条记录,它里面需要添加Field,Document里面有多个Filed,根据你需求而定。
Field:我把它理解为索引创建的列,它里面封装了列里面的元素。如:通过姓名这个列,可以找到下面詹姆斯,杜兰特,科比。。具体的值。它也可以理解为一个Map集合。
总结为:

1.IndexWriter writer = new IndexWriter(INDEX_DIR, new StandardAnalyzer(), true);
2.Document doc = new Document();
3.doc.add(new Field(***));
4.writer.addDocument(doc);
5.writer.commit();//合并索引
6.writer.close();

下面是稍微加了点肉。
看下面代买。简写了一下。有错望指正。

//给索引指定创建位置以及配置信息
Directory directory=new SimpleFSDirectory(new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+ "/Wy/file/"));
        IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_36, new CJKAnalyzer(Version.LUCENE_36));
        if(IsCreateIndex){
            config.setOpenMode(OpenMode.CREATE);
        }else{
            config.setOpenMode(OpenMode.APPEND);
        }
        IndexWriter indexWriter=new IndexWriter(directory, config);

//这个是指定数据库
SQLiteDatabase database = SQLiteDatabase.openDatabase(IndexConfig.DataBasePath, null,SQLiteDatabase.OPEN_READWRITE);
//写sql语句,指定查询的lie
    String sql="SELECT * FROM TProv WHERE id";
    Cursor cursor = db.rawQuery(sql, null);
    while(cursor.moveToNext()){
    Document document=new Document();
//通过数据库查询获取得到所需内容
                int id = cursor.getInt(cursor.getColumnIndex("id"));
                mCursor.close();
//这个是关键
//这四个参数是第一个是存储的名字,自己定义,相当于key值;第二参数是存储对应的值;第三个参数是否进行保存存储,一般是yes;第四个参数是,是否分词,如果分词,查询出来就是分词的结果,如果部不分词查出来就是不分词的结果。
                document.add(new Field("id",(id+"").trim(),Store.YES,Index.NOT_ANALYZED));
                }
//这个就是建索引,统一添加到文本中
                IndexWriter.addDocument(document);
            }
            cursor.close();
        }
        db.close();
        IndexWriter.prepareCommit();
        IndexWriter.commit();
        IndexWriter.close();
        Log.e("TAG", "索引创建完成");
        System.gc();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值