当前位置: 首页 > solr, 搜索 > 正文

Solr简介

关键字:
1 星2 星3 星4 星5 星 (1 次投票, 评分: 5.00, 总分: 5)
Loading ... Loading ...
baidu_share

Solr 的历史
Solr 最初由 CNET Networks 开发,2006 年初,Apache Software Foundation 在 Lucene 顶级项目的支持下得到了 Solr。Solr 于 2007 年 1 月酝酿成熟,在整个项目孵化期间,Solr 稳步地积累各种特性并吸引了一个稳定的用户群体、贡献者和提交人。Solr 现在是 Lucene(Apache 的基于 Java 的全文本搜索引擎库)的一个子项目。

安装和配置

要开始使用 Solr,需安装以下软件:
Java 1.5 或更高版本。

Ant 1.6.x 或更高版本。

Web 浏览器,用来查看管理页面。建议使用 Firefox;相比之下使用 Internet Explorer 可能要复杂些。

servlet 容器,如 Tomcat 5.5。本文中的示例假定您的 Tomcat 在 8080 端口上运行,这是 Tomcat 的默认设置。如果运行的是其他 servlet 容器或在其他的端口上运行,则可能要修改给出的 URL 才能访问示例应用程序和 Solr。我已经假定示例应用程序的各个部分都运行在 Tomcat 的本地主机上。另外还要注意 Solr 以打包的方式与 Jetty 一起提供。
要下载和安装所有这些应用程序,请参阅 参考资料。
设置 Solr
一旦搭建好运行环境,就可以从 Apache Mirrors Web 站点 下载 Solr 1.1 版。接下来,执行以下操作:
停止 servlet 容器。

在命令行选择希望在其中执行操作的目录,从中输入 mkdir dw-solr。

输入 cd dw-solr。

将 Solr 下载版本复制到当前目录中并解压缩。 即可得到 apache-solr-1.1.0-incubating 目录。不用注意 incubating 标记;Solr 早已孵化成熟。

将 Solr WAR 文件复制到 servlet 容器的 webapps 目录中。

下载示例应用程序,将其复制到当前目录,然后解压缩,即可在当前工作目录中得到一个 solr 目录。本文将一直把它用作 Solr 的主目录。

可以通过以下三种方式之一设置 Solr 的主位置:
设置 java 系统属性 solr.solr.home (没错,就是 solr.solr.home)。
配置 java:comp/env/solr/home 的一个 JNDI 查找指向 solr 目录。
在包含 solr 目录的目录中启动 servlet 容器。(默认的 Solr 主目录是当前工作目录下的 solr。)

将示例 WAR 文件(位于 dw-solr/solr/dist/dw.war 中)复制到 servlet 容器的 webapps 目录中,方法与复制 Solr WAR 文件相同。WAR 文件的 Java 的代码位于 dw-solr/solr/src/java 中,而 JSP 和其他 Web 文件位于 dw-solr/solr/src/webapp 中。

要验证所有程序都正常运行,请启动 servlet 容器并将浏览器指向 http://localhost:8080/solr/admin/。如果一切顺利,您应该看到类似图 1 所示的页面。如果没有出现管理页面,查看容器日志中的错误消息。另外,确保从 dw-solr 目录启动 servlet 容器,以便可以正确地设置 Solr 的主位置。

关于 Lucene
要了解 Solr 就必须熟悉 Lucene。 Lucene 是一个基于 Java 的高性能文本搜索引擎库,最初由 Doug Cutting 编写,后来被捐赠给 Apache Software Foundation。很多应用程序都利用 Lucene 来增强自身的搜索功能,因为 Lucene 高速、易用和具有活跃社区的特点。Solr 构建在这些功能之上,使 Lucene 可供企业使用,并具有最小的编程需求。有关 Lucene 的更多信息,请参见 参考资料。
Solr 基础
因为 Solr 包装并扩展了 Lucene,所以它们使用很多相同的术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如 Luke)也可以使用 Solr 创建的索引。
在 Solr 和 Lucene 中,使用一个或多个 Document 来构建索引。Document 包括一个或多个 Field。Field 包括名称、内容以及告诉 Solr 如何处理内容的元数据。例如,Field 可以包含字符串、数字、布尔值或者日期,也可以包含您想添加的任何类型。Field 可以使用大量的选项来描述,这些选项告诉 Solr 在索引和搜索期间如何处理内容。我将在本文中稍后详细讨论这些选项。现在,查看一下表 1 中列出的重要属性的子集:

属性名称 说明
indexed Indexed Field 可以进行搜索和排序。您还可以在 indexed Field 上运行 Solr 分析过程,此过程可修改内容以改进或更改结果。下一节提供了关于 Solr 的分析过程的更多信息。

stored stored Field 内容保存在索引中。这对于检索和醒目显示内容很有用,但对于实际搜索则不是必需的。例如,很多应用程序存储指向内容位置的指针而不是存储实际的文件内容。

Solr 的分析过程
您可以在对应用程序内容索引之前运行 Solr 的分析过程来修改这些内容。在 Solr 和 Lucene 中,Analyzer 包括一个 Tokenizer 和一个或多个 TokenFilter。Tokenizer 负责 生成 Token,后者在多数情况下对应要索引的词。TokenFilter 从 Tokenizer 接受 Token 并且可以在索引之前修改或删除 Token。 例如,Solr 的 WhitespaceTokenizer 根据空白断词,而它的 StopFilter 从搜索结果中删除公共词。其他类型的分析包括词干提取、同义词扩展和大小写折叠。如果应用程序要求以某种特殊方式进行分析,则 Solr 所拥有的一个或多个断词工具和筛选器可以满足您的要求。

您还可以在搜索操作期间对查询应用分析。一个总体规则是:应该对查询和要索引的文档运行相同的分析。不熟悉这些概念的用户常犯的一个错误就是:对文档标记进行词干提取,但不对查询标记进行词干提取,通常导致零搜索匹配。Solr 的 XML 配置使它可以轻易地使用简单声明创建 Analyzer,本文稍后会对此作出展示。
有关 Solr 和 Lucene 的分析工具,以及索引结构和其他功能的更多信息,请参阅 参考资料。

本文固定链接: http://www.chepoo.com/solr-guide.html | IT技术精华网

【上一篇】
【下一篇】

Solr简介:等您坐沙发呢!

发表评论