澳门新浦京娱乐游戏Lucene : 基于Java的全文搜索引擎

澳门新浦京娱乐游戏 1

本文由码农网 –
小峰原创,转发请看清文末的转发须要,招待参预我们的付费投稿布署!

Lucene的构造及创立索引全文字笔迹查证索,lucene索引全文字笔迹核算索

Lucene是一款基于Java的全文字笔迹查验索引擎,跟Sphinx对待,Lucene的坚决守护尤为强盛,应用面也愈加广阔。近期市情上也可以有多数全文字笔迹考验索引擎也是基于Lucene完结的,比方Elastic
Search、Solr、Luke等。

Lucene


  是二个怒放源代码的全文字笔迹考验索引擎工具包,但它不是叁个一体化的全文检索引擎,而是三个全文检索引擎的构造,提供了整机的询问引擎和索引引擎,部分文件解析引擎(塞尔维亚语与德文两种西方语言)。Lucene的指标是为软件开拓人士提供叁个简便易用的工具包,以利于的在目的种类中落到实处全文字笔迹考验索的成效,或然是以此为根基创设起完整的全文字笔迹核算索引擎。

澳门新浦京娱乐游戏 1

优点


 

(1)索引文件格式独立于选择平台。Lucene定义了一套以8位字节为根基的目录文件格式,使得宽容系统或许分歧平台的利用能够分享创设的目录文件。
(2)在古板全文字笔迹核准索引擎的倒排索引的根基上,实现了分块索引,能够针对新的文本构造建设小文件目录,进步索引速度。然后经过与原有索引的归拢,到达优化的指标。
(3)优越的面向对象的类别结构,使得对于Lucene扩充的学习难度下跌,方便扩大新职能。
(4)设计了独自于言语和文件格式的文件剖析接口,索引器通过接受Token流实现目录文件的创制,顾客扩张新的言语和文件格式,只要求得以达成公文分析的接口。
(5)已经默许完毕了一套强盛的询问引擎,客户无需和煦编写代码就能够使系统可获取强大的询问技艺,Lucene的询问达成中暗许实现了布尔操作、模糊查询(Fuzzy
Search[11])、分组查询等等。

Lucene的特点

上边是Lucene的一些亮点,摘自百度宏观

  • 目录文件格式独立于接受平台。Lucene定义了一套以8位字节为底子的目录文件格式,使得宽容系统或然差异平台的选拔能够分享建立的目录文件。
  • 在金钱观全文字笔迹核查索引擎的倒排索引的基础上,完毕了分块索引,能够针对新的公文建构小文件目录,进步索引速度。然后通过与原来索引的联合,达到优化的目标。
  • 杰出的面向对象的类别构造,使得对于Lucene扩展的求学难度下落,方便扩张新功用。
  • 设计了单身于言语和文件格式的公文解析接口,索引器通过选用Token流完毕目录文件的创始,客商扩充新的语言和文件格式,只必要实现文件解析的接口。
  • 现已私下认可完毕了一套强盛的查询引擎,客户无需本人编写代码就可以使系统可得到强大的查询本领,Lucene的询问达成中暗许完成了布尔操作、模糊查询(Fuzzy
    Search[11])、分组查询等等。

概念


 

第一大家能够看一下那张图,已经流传久远了,在自身的驾驭中的是:  
左侧:是种种数码的募集,例如网络,文本,数据库等,收集到通过Lucene创建索引index
左侧:是客商通过一些招来,经过索引,重临结果的三个经过  
澳门新浦京娱乐游戏 2

 

Lucene配置


 

很简短程核导弹多少个jar包,创造三个目录文件
笔者用的是新型版本的6.6.0的宗旨包:lucene-core-6.6.0.jar,能够上官方网站下载
索引文件为:index,这一个文件名能够随便取,因为里面内容自动生成,便是两个索引目录,能够上网下载工具查看,感兴趣能够去尝试
可是这几个jar包:IKAnalyzer6.5.0.jar,是一个analyzer分词管理的扩张包,支持中文的分词,这多个目录跟src目录同级
澳门新浦京娱乐游戏 3  
超级少说先上代码:
首先依据上面的那张lucene的概念图,大家必要先创制叁个目录,这里那个万分小编一向抛出去了,其实须求管理的,太懒了

public static void createindex() throws Exception {
        //创建文件目录    创建在项目目录下的index中
        Directory dir=FSDirectory.open(FileSystems.getDefault().getPath(System.getProperty("user.dir")+"/index"));
        //分词处理         是一个抽象类 一种单字分词,标准的
        Analyzer analyzer=new IKAnalyzer();
        //创建IndexWriterConfig对象
        IndexWriterConfig config=new IndexWriterConfig(analyzer);
        //创建IndexWriter对象
        IndexWriter iWriter=new IndexWriter(dir, config);
        //清除之前的索引
        iWriter.deleteAll();
                //创建文档对象
        Document doc=new Document();
        //向文档中添加文本内容字段,及字段类型
        doc.add(new Field("fieldname","坚持到底gl博主的博文,转载请注释出处", TextField.TYPE_STORED));
        //将文档添加到indexWriter中,写入索引文件中
        iWriter.addDocument(doc);
                //关闭写入    
                iWriter.close();        
}

如此那般运维能够看出你的索引index中的内容文件已经创立出来了

目录已经创办,接下去查询一下试试索引 ,传入须要查询的词

public static void search(String string) throws Exception {

        Directory dir=FSDirectory.open(FileSystems.getDefault().getPath(System.getProperty("user.dir")+"/search"));
        //打开索引目录的
        DirectoryReader dReader=DirectoryReader.open(dir);
        IndexSearcher searcher=new IndexSearcher(dReader);
        //第一个参数 field值 ,第二个参数用户需要检索的字符串
        Term t=new Term("fieldname",string);
        //将用户需要索引的字符串封装成lucene能识别的内容 
        Query query=new TermQuery(t);
        //查询,最大的返回值10
        TopDocs top=searcher.search(query, 10);
                //命中数,那个字段命中,命中的字段有几个
        System.out.println("命中数:"+top.totalHits);
               //查询返回的doc数组
        ScoreDoc[]    sDocs= top.scoreDocs;   
            for (ScoreDoc scoreDoc : sDocs) {
                //输出命中字段内容
        System.out.println(searcher.doc(scoreDoc.doc).get(field));
}
}

就那样多少个全文字笔迹考验索的测试就出来了,多去想想计算,扩充出去

再给加上三个代码有益于精晓

    public static void main(String[] args) throws Exception {
        String chString="坚持到底的文章,转载请注释出处";
        Analyzer analyzer=new IKAnalyzer();
        TokenStream stream=analyzer.tokenStream("word", chString);
        stream.reset();
        CharTermAttribute cta=stream.addAttribute(CharTermAttribute.class);
        while (stream.incrementToken()) {
            System.out.println(cta.toString());
        }
        stream.close();
    }

展现如下:

澳门新浦京娱乐游戏 4

还足以增添这些文本,有某个亟待小心的是,注意你的编码格式

先是个:ext.dic
扩大辞书,分词中这么些供给组在一块儿的,如:分词管理也许将“一心一德”多少个字分为“不积硅步何以致千里”和“到底”,能够在这里个文件中一向抬高坚持不懈,就能够展现出持锲而不舍的这么些目录

其多个:stopword.dic
增添截止词典,分词中不想现身的,不希望他被分别现身或独自的,可现在里面写,检索的时候就不会有

其次个:是点名地方四个扩展字典的

澳门新浦京娱乐游戏 5

那一个正是最基本控制的内容,还恐怕有非常多分词算法等项目,须要去扩展

 

         【版本注明】本文为博主原创小说,转发请注脚出处      

Lucene
是三个绽放源代码的全文字笔迹核查索引擎工具包,但它不是一个安然无恙的全文字笔迹核实索引擎,…

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图