lucene3创建Html索引时候报Parse Aborted错的解决方法
问题描述: 用Lucene自带的htmlindex Demo在建索引时,会报错: Parse Aborted: Lexical error at line 63, column 16. Encountered: "\u987b" (39035), after : "" 究其原因是由于某html文档里的某标签内出现Unicode编码的字符,如出现中文,而导致的。 问题解决: 只要修改HtmlParser...阅读全文
问题描述: 用Lucene自带的htmlindex Demo在建索引时,会报错: Parse Aborted: Lexical error at line 63, column 16. Encountered: "\u987b" (39035), after : "" 究其原因是由于某html文档里的某标签内出现Unicode编码的字符,如出现中文,而导致的。 问题解决: 只要修改HtmlParser...阅读全文
TermVector是Lucene 1.4新增的,TermVector保存Token.getPositionIncrement() 和Token.startOffset() 以及Token.endOffset() 信息. 各种参数说明: Field.TermVector.NO:不保存term vectors Field.TermVector.YES:保存term vectors Field.TermVector.WITH_POSITIONS:保存term vectors.(保存值和token位置信息) Field.TermV...阅读全文
Lucene 查询的保留字和关键字有: + – &| ! ( ) { } [ ] ^ ~ * ? : \ 还有 AND OR NOT 这些关键字,在查询之前要进行替换或过滤 在java中使用下面的方法可以全部替换Lucene 查询的保留字和关键字: String str="www.wenhq.com \"[亲亲宝宝]+ – &| ! ( ) { } [ ] ^ ~ * ? :\\"; s...阅读全文
使用Lucene做全文检索,一般我们经常会在多个字段(域)中查找,而不一定关心在那个字段中包含需要查找的值.比如在搜索框中输入:亲亲宝宝 软件开发,只要标题、内容、作者等包含“亲亲宝宝 软件开发”都是我们要查找的结果。Lucene中MultiFieldQueryParser正好给我们提供多字段查找带来方便. MultiFieldQueryParser...阅读全文
用户在搜索引擎中进行搜索时,常常查找的并非是一个简单的单词,很有可能是几个不同的关键字。这些关键字之间要么是紧密相联,成为一个精确的短语,要么是可能在这几个关键字之间还插有其他无关的关键字。此时,用户希望将它们找出来。不过很显然,从评分的角度看,这些关键字之间拥有与查找内容无关短语所在的文档的分值...阅读全文
在lucene3.0中,范围查询也有很大的变化,RangeQuery已经不推荐使用,使用TermRangeQuery和NumericRangeQuery两个替代。 TermRangeQuery:主要用于文本范围查找; IndexReader reader = IndexReader .open(FSDirectory.open(INDEX_DIR), true); // only searching, Searcher search...阅读全文
由于lucene生成索引文件比较耗时,索引我们可以把经常变动的和不变化的防到两个索引文件中,查询时使用联合查询,可以在两个索引中同时查找. IndexSearcher[] searchers = new IndexSearcher[2]; searchers[0] = new IndexSearcher(m_indexpath); searchers[1] = new IndexSearcher(m_outindexpath); MultiSearcher...阅读全文
Lucene本身并不支持更新, 所以只能选择先删除再新增记录。 lucene本身支持两种删除模式 1,DeleteDocument(int docNum) //指定文档标号自动删除 2,DeleteDocuments(Term term) //删除所有出现该term的文档 前者是根据文档的编号来删除该文档,docNum是该文档进入索引时Lucene的编号,是按照顺序编的;后者是删除满足某一个...阅读全文
lucene3.0中BooleanQuery 实现与或的复合搜索 . BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST,BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。必须包含,不能包含,可以包含三种.有以下6种组合: 1.MUST和MUST:取得连个查询子句的交集。 2.MUST和MUST...阅读全文