Lucene学习

Posted biyangqiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene学习相关的知识,希望对你有一定的参考价值。

技术分享图片

技术分享图片

技术分享图片

PS:当在搜索框检索“是”,根据lucenne存取记录,会有一张词汇表(词汇表会根据不同分词原则进行分词,可能是一个或者多个,右边里保存这标号)
创建索引库
技术分享图片
/**
     * 创建索引库
     * 将Aritcle对象放入索引库中的原始记录表中,从而形成词汇表
     */
    @Test
    public void createIndexDB() throws Exception{
        //创建Article对象
        Article article = new Article(1,"培训","传智是一家IT培训机构");
        //创建Document对象
        Document document = new Document();
        //将Article对象中的三个属性值分别绑定到Document对象中
        /*
         *参数一:document对象中的属性名叫xid,article对象中的属性名叫id,项目中提倡相同
         *参数二:document对象中的属性xid的值,与article对象中相同
         *参数三:是否将xid属性值存入由原始记录表中转存入词汇表
         *       Store.YES表示该属性值会存入词汇表
         *       Store.NO表示该属性值不会存入词汇表
         *       项目中提倡非id值都存入词汇表
         *参数四:是否将xid属性值进行分词算法
         *       Index.ANALYZED表示该属性值会进行词汇拆分
         *       Index.NOT_ANALYZED表示该属性值不会进行词汇拆分
         *       项目中提倡非id值都进行词汇拆分
         *       目前将分词理解为分汇拆分,目前认为一个汉字一个分词拆分 
         */
        document.add(new Field("xid",article.getId().toString(),Store.YES,Index.ANALYZED));
        document.add(new Field("xtitle",article.getTitle(),Store.YES,Index.ANALYZED));
        document.add(new Field("xcontent",article.getContent(),Store.YES,Index.ANALYZED));
        
        Directory directory =  FSDirectory.open(new File("E:/IndexDBDBDB"));
        Version version = Version.LUCENE_30;
        Analyzer analyzer = new StandardAnalyzer(version); //这种分词模型是按照单个字进行分词的
        MaxFieldLength maxFieldLength = MaxFieldLength.LIMITED; //如果有多余2万个字内容,只会以前1万个为准
        //创建IndexWriter字符流对象
                /*
                 * 参数一:lucene索引库最终应对于硬盘中的目录,例如:E:/IndexDBDBDB
                 * 参数二:采用什么策略将文本拆分,一个策略就是一个具体的实现类
                 * 参数三:最多将文本拆分出多少词汇,LIMITED表示1万个,即只取前1万个词汇,如果不足1W个词汇个,以实际为准
                 */
        IndexWriter indexWriter = new IndexWriter(directory,analyzer,maxFieldLength);
        //将document对象写入lucene索引库
        indexWriter.addDocument(document);
        //关闭IndexWriter字符流对象
        indexWriter.close();
    }

PS:创建好的文件

 技术分享图片

 

 

 



以上是关于Lucene学习的主要内容,如果未能解决你的问题,请参考以下文章

Lucene学习总结

ElasticSearch 学习笔记一 简介

Lucene的全文检索学习

学习 Lucene 原来可以那么简单!

Lucene 学习-安装 Elasticsearch 服务器

荧客技荐学习 Lucene 原来可以那么简单!