Lucene6.0学习笔记——建立索引

Stella981
• 阅读 620

1.定义相关变量

private final static String filePath="E:\\workspace\\luceneDemo\\files";
private final static Path indexPath=Paths.get("E:\\workspace\\luceneDemo\\indexStore");
public static Analyzer analyzer = new SmartChineseAnalyzer();

filePath:需要创建索引的源文件地址

indexPath:索引保存地址

analyzer:定义分词器,这里采用lucene自带的中文分词器

2.建立索引

public static void createIndex(){
    List<Document> doc = File2DocumentUtil.files2Document(filePath);
    try {
        /*索引文件采用物理存储*/
        FSDirectory directory = FSDirectory.open(indexPath);
        /*索引文件内存存储*/
        //RAMDirectory directory1 = new RAMDirectory();
        //配置indexWriter,写入索引
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        IndexWriter indexWriter=new IndexWriter(directory, config);
        //创建之前删除所有索引
        indexWriter.deleteAll();
        //添加需要建立索引的Document
        indexWriter.addDocuments(doc);
        //提交写入
        indexWriter.commit();
        //关闭indexWriter
        indexWriter.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

3.文件转Document方法

public static List<Document> files2Document(String filePath) {
    File dir=new File(filePath);
    List<Document> list=new ArrayList<>();
    for(File file:dir.listFiles()){
        Document doc=new Document();
        doc.add(new TextField("name", file.getName(), Store.YES));
        doc.add(new StringField("path", file.getPath(), Store.YES));
        /*设置排序字段*/
        doc.add(new NumericDocValuesField("size",file.length()));  
        doc.add(new StringField("size", String.valueOf(file.length()), Store.YES));
        doc.add(new TextField("content", getFileContent(file), Store.YES));
        list.add(doc);
    }
    return list;
}

StringField:不会进行分词操作;

TextField:会进行分词操作。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Stella981 Stella981
3年前
2021 最顶级 React 组件库推荐
点上方蓝字关注公众号「前端从进阶到入院」作者丨MaxRozen译者丨王强策划丨小智AntDesign!(https://oscimg.oschina.net/oscnet/a85c35f23bd04e5da6a1e5e68a24119b.png)项目链接:AntDesignh
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
mysql系列(三)——mysql架构与存储引擎
一、MySql逻辑架构!(https://oscimg.oschina.net/oscnet/up35e1824330cd1df7ac66652b9b1dbc41965.png)1.连接层!(https://oscimg.oschina.net/oscnet/up272cb2634e262cc2df52220a063
可莉 可莉
3年前
2021 最顶级 React 组件库推荐
点上方蓝字关注公众号「前端从进阶到入院」作者丨MaxRozen译者丨王强策划丨小智AntDesign!(https://oscimg.oschina.net/oscnet/a85c35f23bd04e5da6a1e5e68a24119b.png)项目链接:AntDesignh
Stella981 Stella981
3年前
Python_爬虫_案例汇总:
1.豆瓣采集!(https://oscimg.oschina.net/oscnet/29e918bf2ebced4da903f8ab789cd37ca35.jpg)!(https://oscimg.oschina.net/oscnet/83a646b5655e70dc379744e8ebfe145238d.jpg)1codin
Wesley13 Wesley13
3年前
unity将 -u4E00 这种 编码 转汉字 方法
 unity中直接使用 JsonMapper.ToJson(对象),取到的字符串,里面汉字可能是\\u4E00类似这种其实也不用转,服务器会通过类似fastjson发序列化的方式,将json转对象,获取对象的值就是中文但是有时服务器要求将传参中字符串中类似\\u4E00这种转汉字,就需要下面 publ
Stella981 Stella981
3年前
Eclipse的常用功能
1、eclipse的基础不要使用中文版1.1、workspace所有的开发项目都需要在workspace中,记住workspace放置在一个不会被删除的目录中!(http://static.oschina.net/uploads/space/2016/0802/120110_nDPN_2625464.png)改变workspace