Why Lucene/Solr 1 / 8 Why Lucene/Solr James Tang(james@fwso
简介 搜索引擎已经为几乎所有人所熟知,像Google, 百度这样的公共搜索引擎几乎成了日常互联网消费品
但搜索引擎背后的技术很少有人关心,而搜索引擎技术也并不像使用Google 那样简单直接,在Google 首页的输入框中输入关键字之后,需要成千上万的服务器经过多道工序才能返回我们需要的结果
虽然我们在此并不打算讨论Google 这样的复杂的系统,但搜索引擎的工作基本原理有必要在此讨论一下,以为下面的讨论提供一点基础
搜索引擎所涉及到的技术包括数据结构、数据分析、数据处理、数据存储及搜索等,这些技术统称为数据检索(Information retrieval, IR)[1]
搜索引擎的种类众多,用途各异,但我们这里专注于 Web 搜索引擎
一个完整的Web 搜索引擎由多个部分组成,如图一所示: 图一 搜索引擎基本架构 图一中红色部分是本文讨论的重点,也是 Lucene/Solr 的核心,浅蓝色部分为应用需要考虑的部分
在构建文档阶段,需要考虑的主要技术有分词(Tokenizing)、停用词(Stopping word)、词干分析(Stemming)等,这些技术要素也是我们首要考虑的因素
除此以外,还有链接抽取及分析、语义分析、信息分类等技术是其它公共搜索引擎需要重点考虑的问题
Why Lucene/Solr 2 / 8 在索引建立阶段,主要技术有文档统计、权重、转换(Inversion)等
在查询处理阶段,需要考虑查询结语评级(Ranking),性能评估等
Lucene Lucene[2]是一个基于 Java 开发的免费、开源、高性能、可扩展的 IR 程序库,并且是目前应用最为广泛的 IR 程序库
很多人可能误认为 Luc