用lucene为数据库搜索建立增量索引

java lucene搜索引擎的实现 *         实现思路:首次查询数据库表所有记录,对每条记录建立索引,并将最后一条记录的id存储到storeId.txt文件中  *         当新插入一条记录时,再建立索引时不必再对所有数据重新建一遍索引,  *         可根据存放在storeId.txt文件中的id查出新插入的数据,只对新增的数据新建索引,并把新增的索引追加到原来的索引文件中 阅读详情

用lucene为数据库搜索建立增量索引

lucene 建立索引不可能每次都重新开始建立,而是按照新增加的记录,一次次的递增

建立索引的IndexWriter,有三个参数

 

 

IndexWriter writer = new IndexWriter(path, new StandardAnalyzer(),isEmpty);

其中第三个参数是bool型的,指定它可以确定是增量索引,还是重建索引.

对于从数据库中读取的记录,譬如要为文章建立索引,我们可以记录文章的id,然后下次再次建立索引的时候读取存下的id,从此id后往下继续增加索引,逻辑如下.

 

建立增量索引,主要代码如下

public void createIndex(String path)

{

     Statement myStatement = null;

     String articleId="0";

     //读取文件,获得文章id号码,这里只存最后一篇索引的文章id

    try {

        FileReader fr = new FileReader("**.txt");

        BufferedReader br = new BufferedReader(fr);                

        articleId=br.readLine();

        if(articleId==null||articleId=="")

        articleId="0";

        br.close();

        fr.close();

      } catch (IOException e) {

        System.out.println("error343!");

        e.printStackTrace();

      }

    try {

        //sql语句,根据id读取下面的内容

        String sqlText = "*****"+articleId;

        myStatement = conn.createStatement();

        ResultSet rs = myStatement.executeQuery(sqlText);

       //写索引

        while (rs.next()) {

         Document doc = new Document();

         doc.add(Field.Keyword("**", DateAdded));

         doc.add(Field.Keyword("**", articleid));

         doc.add(Field.Text("**", URL));   

         doc.add(Field.Text("**", Content));

         doc.add(Field.Text("**", Title));   

         try{

            writer.addDocument(doc);

          }

          catch(IOException e){

            e.printStackTrace();

         }

           //将我索引的最后一篇文章的id写入文件

          try {

           FileWriter fw = new FileWriter("**.txt");

           PrintWriter out = new PrintWriter(fw);   

           out.close();

           fw.close();

           } catch (IOException e) {

             e.printStackTrace();

           }

         }

            ind.Close();

            System.out.println("ok.end");

         }

         catch (SQLException e){

            e.printStackTrace();

        }

        finally {

            //数据库关闭操作

        }       

    }

 

然后控制是都建立增量索引的时候根据能否都到id值来设置IndexWriter的第三个参数为true 或者是false

 

 boolean isEmpty = true;

 try {

    FileReader fr = new FileReader("**.txt");

    BufferedReader br = new BufferedReader(fr);                

    if(br.readLine()!= null) {

        isEmpty = false;

     }

     br.close();

     fr.close();

    } catch (IOException e) {

       e.printStackTrace();

  }

           

  writer = new IndexWriter(Directory, new StandardAnalyzer(),isEmpty);

结合lucene实现大数据的like模糊查询 需求 很多时候我们在用数据库的需要使用模糊查询,我们一般会使用like语句来,然而这样的的效率不是很高,那么使用Lucene来检索的话,效率会高很多。 lucene结合数据库步骤 写一段传统的JDBC程序,将每条的用户信息从数据库读取出来 针对每条用户记录,建立一个lucene document  Document doc = new Document();  并根 阅读详情

相关推荐

Lucene增量索引的奥秘

随着实时搜索、实时分析等需求的增长,对索引更新的实时性要求也越来越高。如何进一步缩短新文档可被检索的延迟,同时保证系统的稳定性和查询性能,是增量索引技术未来的一大挑战。在Lucene中实现自定义分词器需要继承Tokenizer类,并实现其方法。继承Tokenizer类:创建一个新的类继承Tokenizer。实现incrementToken方法:在该方法中实现自定义的分词逻辑。注册分词器:将自定义分词器注册到Lucene的分析器中。

AI天才研究院 1037

lucene分词搜索,增量索引及全量索引

对数据进行分词,建立索引增量及全量更新,定时更新

基于lucene技术的增量索引

基于lucene技术的增量索引,实现索引的首次创建,动态增删改

lucene索引合并与增量索引

       利用 Lucene,在创建索引的工程中你可以充分利用机器的硬件资源来提高索引的效率。当你需要索引大量的文件时,你会注意到索引过程的瓶颈是在往磁盘上写索引文件的过程中。为了解决这个问题, Lucene 在内存中持有一块缓冲区。但我们如何控制 Lucene 的缓冲区呢?幸运的是,Lucene 的类 IndexWriter 提供了三个参数用来调整缓冲区的大小以及往磁盘上写索引文件的频率。

yfw418的专栏 2174

Lucene5学习之增量索引(Zoie)

      清明节放假期间,就一直在思考着Lucene增量索引问题,通过google我了解到了Zoie的存在,于是就开始2天的学习Zoie之旅,对Zoie的原理以及使用基本掌握,还特地使用Zoie实现了Lucene索引增量索引。不过Zoie已经好久没更新了,Zoie目前版本只支持到Lucene4.3.0,为此我花了2个多小时,修改了Zoie的源码将它升级使其支持Lucene5.0,我修改过的Z...

嘿↗你的益达 415

关于Lucene增量索引

public void AddIndexFile(int BusinessID)<br />  {<br />   //因为我是交替创建索引在不同的文件夹,所以需要获取当前索引文件夹<br />   string IndexPath = GetCurrentIndexPath("Index");<br />   IndexPath = Server.MapPath("/search/" + IndexPath + "/");<br />   IndexSearcher searchBusiness = ne

博客转移到个人主站,请大家移步 http://www.soskp.com/ 912

lucene实时 增量索引_什么是Lucene

Lucene最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索引擎。是Apache的子项目,网址:http://lucene.apache.org/用途为软件开发人员提供一个简单易用的工具包,以方...

weixin_39767322的博客 316

lucene数据库搜索建立 增量索引

lucene 建立索引不可能每次都重新开始建立,而是按照新增加的记录,一次次的递增建立索引的IndexWriter类,有三个参数 IndexWriter writer = new IndexWriter(path, new StandardAnalyzer(),isEmpty);其中第三个参数是bool型的,指定它可以确定是增量索引,还是重建索引.对于从数据库中读取的记录,譬如要为文章

蓝色衬衫 568

lucene.net mysql_用lucene数据库搜索建立 增量索引

publicvoidcreateIndex(String path){Statement myStatement=null;String articleId="0";//读取文件,获得文章id号码,这里只存最后一篇索引的文章idtry{FileReader fr=newFileReader("**.txt");BufferedReader br=newBufferedReader(fr);arti...

weixin_33172728的博客 162

mysql lucene 结合_Lucene基础(四)-- 结合数据库使用

需求很多时候我们在用数据库的需要使用模糊查询,我们一般会使用like语句来,然而这样的的效率不是很多(很抱歉我们亲自去测,很多都这么说的),那么使用Lucene来检索的话,效率会高很多。lucene结合数据库步骤写一段传统的JDBC程序,将每条的用户信息从数据库读取出来针对每条用户记录,建立一个lucene documentDocument doc = new Document();并根据你的...

weixin_33187554的博客 555

Lucene索引数据库

1.写一段传统的JDBC程序,将每条的用户信息从数据库读取出来 2.针对每条用户记录,建立一个lucene document Document doc = new Document(); 并根据你的需要,将用户信息的各个字段对应luncene document中的field 进行添加,如: doc.add(new Field("NAME","USERNAME",Field.Stor

先疯盗骨 405

java lucene 搜索案例_Java搜索工具——Lucene实例总结(一)

搞了一天半,终于利用lucene工具Demo完了我想要的功能,这其中包括为数据库建立增量索引、从索引文件根据id删除索引、单字段查询功能、多字段查询功能、多条件查询功能以及查询结果关键字高亮显示的功能。今天晚些的时候把这些功能进行了整理。看样子一时半会还下不了班,就把Demo的结果 一 一 列举下来吧。。。1. 所需要的文件(见附件)依赖包:lucene-core-2.4.0.jar...

weixin_35849711的博客 526

Lucene笔记+PaodingAnalyzer+高亮显示

<br /> <br />[1]<br />(1)<br />Lucene是一个基于Java全文搜索引擎,利用它可以轻易地为Java软件加入全文搜寻功能。 <br />(2)<br />Lucene什么?<br />Lucene可以对任何的数据索引搜索Lucene不管数据源是什么格式,只要它能被转化为文字的形式,就可以被Lucene所分析利用。也就是说不管是MS word, Html ,pdf还是其他什么形式的文件只要你可以从中抽取出文字形式的内容就可以被Lucene所用。<br />(3)<b

孙彦辉的专栏 1342

【转】Lucene笔记+PaodingAnalyzer+高亮显示

(2011-07-11 09:43:35) 转载▼ 标签: it 分类:lucene学习 form:&lt;wbr&gt;&lt;a target="_blank" href="http://shenzhenchufa.blog.51cto.com"&gt;http://shenzhenchufa.blog.51cto.com&lt;/a&gt;&l...

dawuafang 253
上一篇: 微软:将以超过1亿美元收购语义搜索引擎Powerset
下一篇: Lucene 的索引排序是使用了倒排序原理
iptvspace
博客等级 码龄18年 21粉丝 5原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值