拥抱Lucene- -
这几天使用了一下Lucene, 发现这是一个很好的东东。用户接口很简单,使用起来比较方便,但刚接触时也有不少疑问,主要是对内部处理机制不了解,而java doc又比较简明,情急之下,只好先问问人。
lucene本身不带有对中文切词的能力,车东提供了一个很好的切词的包,见weblucene,对二个字及以上的词能切分的比较好,对单字要差一些。
简单的替换Analyzer就可以实现对中文的全文检索。
对Query的理解很有必要,一篇文章供参考:
QueryParser Rules
其他有关文章:
基于Java的全文索引引擎Lucene简介
Advanced Text Indexing with Lucene
hao
发表: soudown 于 August 24, 2004 10:05 PM双字切分的方法不好,效率底,建的索引太冗余。其实用单字切分的方法完全就足够,lucene1.3以后就已经支持中文切分了。
发表: yuanlang 于 August 17, 2004 10:16 AMlucene对索引提供增、删、改(先删旧的再增加改后的)、多索引合并、查询等操作,不提供怎样处理数据源的操作,对于同步数据这样的操作需要自己写。你要做的是在数据变化后调用lucene的增、删、改操作以保证数据与索引的一致
发表: tt 于 August 12, 2004 04:43 PM想做个全文检索,可不清楚lucene的索引能否与数据源同步???怎么做??谢谢!!!
发表: xgh 于 August 10, 2004 05:21 PM在lucene sandbox中有两个处理中文的Analyzer和tokenizer,一个是CJKAnalyzer、ChineseTokenizer,一个是ChineseAnalyzer、ChineseTokenizer.
区别如下:
If having a Chinese text"C1C2C3C4" to be indexed, the tokens returned from the ChineseTokenizer are C1, C2, C3, C4. And the tokens returned from the CJKTokenizer are C1C2, C2C3, C3C4.
即ChineseTokenizer按单个字分
CJKTokenizer为二元分词
按单个字分词的主要问题是会查不准
二元分词的主要问题是索引存储空间将会很大,如“北京天安门”二元分词为“北京”“京天”“天安”“安门”,即n-1个词,相应的索引结构还要保存n-1个posting(即这个词出现的位置信息)
最好的方法是把句子中的词识别出来,即分为“北京”“天安门”,这样索引大小可以减少很多,识别的方法很多,最简单的是用词典匹配方法
发表: bear 于 August 3, 2004 12:16 PM西文中可以自然使用空格做分词,中文必须采取技术手段,把一个句子变成独立的词来做索引,否则,只能整句匹配,或匹配不准
发表: udoo 于 June 25, 2004 02:47 PM假设基于单个字符:这样他把文章分成一个一个的字,每个字都是一个索引单元,查询的条件也别切成一个一个字,然后精确查找。因此:当文章中有类似的句子:我在海上玩,儿查询的是上海时,上篇文章也将被查找到。这个效率很低
发表: crown 于 June 24, 2004 10:01 PM我想请问一下,这个文档内容的索引到底是怎么样建立的,为什么需要分词呢,查询时输入的条件也需要分词吗?可否举例说明,如采用车东的两元分词后,开始句子是什么,分完后是什么。谢谢,万分着急!!!!!!!!!
发表: crown 于 June 24, 2004 09:15 PM我想请问一下,这个文档内容的索引到底是怎么样建立的,为什么需要分词呢,查询时输入的条件也需要分词吗?可否举例说明,如采用车东的两元分词后,开始句子是什么,分完后是什么。谢谢,万分着急!!!!!!!!!
发表: crown 于 June 24, 2004 09:10 PMlucene本身对中文支持的不好,使用chedong提供的weblucene可以支持双字切分。就是替换了原来的standard anylizer
发表: udoo 于 April 19, 2004 09:32 PM使用lucene1.3下的哪一个类支持单字切分?
发表: 新手 于 April 19, 2004 03:40 PM修改何处可以进行两个字以上词的切分
发表: 淮瀚 于 April 8, 2004 06:01 PM出现Parse Aborted错误的原因是lucene对中文编码的识别有问题,我还未遇到,但类似的问题是我使用xdoclet时,当java file里有中文时,就报类似的错误,后来升级了一下版本解决了,原因是xdoclet在解析文件时,是按照iso8859-1来做的,中文就是两个字节,遇到后不能识别就报错,lucene可能也是类似的原因,与input stream的字符集有关。
发表: udoo 于 April 3, 2004 04:27 PMdemo 的indexfiles 正常,searchfiles也正常
可是用indexHTML对HTML文件建索会出错呢
Parse Aborted: Lexical error at line 35, column 34. Encountered: "\u5316" (2127
0), after : ""
页面上检索没有报错,就是找不到资料
可以帮我一下吗
"使用的是单字切分",没有实用价值,谁会用单个字去查询这么傻,车东做的那个两个字以上的词组检索才有实用价值
发表: voodoosky 于 March 25, 2004 11:12 AM不知道有人调过那个1。3的demo了没有?
为什么我的中文总是调不通?
在IndexFiles下正常,
但IndexHTML就不能找到中文了,英文正常
如果哪位知道,请告知!
谢谢!
我用了lucene的索引,是索引html文件,为什么会有?号呢>
而且索引的时候报Parse Aborted: Lexical error at line 10, column 36. Encountered: "\u7a0b" (3124
3), after : ""
是什么意思啊?
竹笋炒肉上有三篇笔记,还不错,
对了,lucene对文本的字符编码识别有一定问题,
java.io.reader有关,如果识别为乱码,将不能够索引相应内容,关于编码问题,可以参考http://www.google.com/search?q=微软 联通 有仇
lucene1.3已经完全支持中文切分词语了。
:http://www.theserverside.com/home/thread.jsp?thread_id=23043
The Apache Jakarta team has announced the final release of Lucene 1.3. Jakarta Lucene is a high-performance, full-featured text search engine written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform. TheServerSide uses Lucene for our new search tool.
lucene下载地址:http://cvs.apache.org/dist/jakarta/lucene/v1.3-final/
5. Fix StandardTokenizer's handling of CJK characters (Chinese,
Japanese and Korean ideograms). Previously contiguous sequences
were combined in a single token, which is not very useful. Now
each ideogram generates a separate token, which is more useful.
经过测试,对中文的支持很方便了。
使用的是单字切分。
- 作者: wuxh 2004年09月5日,星期日 11:04:54

浙公网安备 33010602011771号