搜索技术入门到精通

Wednesday, January 10, 2007

第四章 索引 Full Text Indexing

在学习搜索引擎技术之前最好有一定的知识储备,Modern Information Retrieval 是本经典IR的教材,本文默认读者已经具有相应的基础。
数据需要分不同的类型进行相应处理,一般的网页内容文本大致可以分为四部分:
Keyword: 不做分析,逐字/词建索引并存储.例如URL,文件系统路径,日期,人名,社会保险帐号,电话号码等。举了本地搜索的例子,可以把系统路径名作为关键词.
UnIndexed: 不做分析也不做索引,但是值存储在索引中。这种一般是提供搜索结果的可显示内容。这些内容我们通常不需要去搜索(URL或者是数据库的主值),只是在索引中存储原始的值。于是这里不适合存储大量的信息。
UnStored: 和UnIndexed相反,对这类field做分析和索引,但是不在索引中存储。通常是不需要在其原始的形式中检索信息,比如web页面的body部分,或者一些不大重要的文本。
Text: 分析,索引,存储索引。意味着将对这部分进行索引。
当然不局限于这几种,实际应用中可以扩展设计出更多的数据类别。设计的原则可以归结为:经常需要被检索的内容或者说网页的实质内容要建立相应的索引(和词典的功能类似),提供有效的信息组织形式并减少冗余。
索引和查询的底层实现是搜索引擎的核心:
1)尽可能对字段进行索引来提高查询速度,但过多的索引会对索引表表的更新操作变慢,而对结果过多的排序条件,实际上往往也是性能的杀手之一。
2)索引器的merge_factor提供了归并几个索引的功能,参数的合理设置直接影响了索引器的性能。
3)20%/80%原则:查的结果多并不等于质量好,尤其对于返回结果集很大,如何优化这头几十条结果的质量往往才是最重要的。
4)尽可能缩小减缩的结果集相对于单个应用来说,因为即使对于大型分布式文件系统,对结果集的随机访问也是一个非常消耗资源的操作。

No comments: