终于全文检索这块弄完了,在此总结一下。

      先介绍一下为什么要用全文检索,当数据库查询字符串时 通常用like 来进行比较,当有大量文本时,从中检索出有用的信息会产生大量的性能开销,而全文检索,则是先对文本进行分词,然后对词进行索引,因此你搜索一个词时 ,速度会很快。

不过建立索引的过程 也是一个很大的开销,^_^。索引只需要建立一次,以后就可以很方便的进行查询了。

 

      lucene是一个用java编写的全文检索的组件,是对上面的全文检索原理的实现,可以很方便的集成到自己的系统中,实现自己的全文检索。lucene对中文支持不好,需要使用其他的中文分词包,目前比较好的 有:ik,paoding,je 等。

     lucene的基本存储单位是  document ,可以将其和record等价,因此你可以写convert方法,将record转换成document就能进行索引了。field可以看成字段

      lucene有  delete,save,search三个基本操作。

      delete操作,  indexReader.delete(term),indexReader(int doc)

                          indexwriter 中也有相应的方法

      save 操作,只能通过indexwriter 来进行  indexwrite.addDocument()

 

      查询    .  indexsearch.search(query ,topcollector)

          有 termquery 可以查询一个字段,booleanquery可以查询多个字段

      lucene还支持查询语法,常用的有  and  or  not 其他的我没去记  ^_^

      topcollector 中有一个topdocs()方法,这个方法是生成 topdoc[] 只能调用一次。