读书人

lucene 应用总结

发布时间: 2012-12-22 12:05:07 作者: rapoo

lucene 使用总结

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

?? ? ?先介绍一下为什么要用全文检索,当数据库查询字符串时 通常用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[] 只能调用一次。

读书人网 >编程

热点推荐