1、分块索引。为新增文件单独创建索引,再合并。 (索引优化技术)
2、只要扩展相应接口,就可以支持新的语言和文件格式。
3、对每个Lucene例子进行Junit测试,这是一项有意思的测试。 把精力集中到比较小的细节中去,并且可以毫无后顾之忧的修改系统中的部分代码。
4、可以通过Lucene官方的PowerBy找到其他一些以Lucene为基础的开源软件。
5、Lucene是Doug妻子的中间名:这也是她祖母的姓。
Lucene能够对任意可转换为文本格式的数据进行索引和搜索。
整个Lucene的核心,就是索引两个字。
Directory用于指定索引所在的位置,Query对应于多种实现。
技术:
1、Lucene的一个方便之处在于,它允许用于不同Field的Document在一个索引中共存。
2、一个Document可以有多个Field,而多个Field可以对应于同一个域,如"contents"、"title"。
3、没有设置Index的Field是不能设置norm的,Field、Indexed、Norm三者之间的关系是什么?
索引:
1、索引是Lucene最核心的东西。最简单的索引大致如下:以term为entry,命中该term的所有doc是一个列表。这个列表可以是排序的。Lucene的实际索引实现是否也是这样的。以前在一个IR的ppt中看到,一般的SE索引都是这个结构的,Lucene索引有什么特别之处吗?这个可以深入了解下的。
2、使用Luke时的一个发现。在Document标签,可以通过Term遍历包含该Term的Document列表。点击show all,这会跳转到Search标签。也可以点击Show Position显示文档的位置信息。 这里的term frequency是指 term在文档中的出现次数。 Lucene中Term对应Document真的是组织成一个列表吗?或者做过一些优化?
3、
关键技术:
1、列举一些重要的类,也是深入了解Lucene的入口:
Analyzer分词器,将文档(索引时)和查询字符(查询时)进行分词
Query 查询条件,可以包含多个Term,进行布尔查询,区间查询等。BooleanQuery本身是布尔查询子句的容器。
Term 分词项,对应于索引中的入口?
Directory 指向索引目录,可以使FS或RAM等,还可以自己做一些实现,哈哈
Similarity 用于对词进行评分。这个地方有很多工作可以做的。
查询表达式,通过QueryParser可以将表达式转换为特定的Query对象。比直接调用API要清晰。NOT操作必须和一个其他操作结合,才能用于查询。