没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
84页
Solr 是一种可供企业使用的、基于 Lucene 的搜索服务器,它支持层面搜索、命中醒目显示和多种输出格式。在这篇分两部分的文章中,Lucene Java的提交人 Grant Ingersoll 将介绍 Solr 并向您展示如何轻松地将其表现优异的全文本搜索功能加入到 Web 应用程序中。 一旦用户需要某种信息,就可以立即搜索到这些信息,这种要求再也不是可有可无的了。随着 Google 和类似的复杂搜索引擎的出现,用户希望得到高质量的搜索结果,帮助他们快速、轻易地找到所需的信息。经理对您的在线购物站点同样抱有很高的期望,要求它能够提供一个可伸缩、高度可用且易于维护的搜索解决方案,并且安装这个解决方案不应太昂贵。对于您而言,只是希望事业进步,让老板和客户满意,以及保持头脑清醒。
资源推荐
资源详情
资源评论
Solr 详细学习笔记
Solr 是一种可供企业使用的、基于 Lucene 的搜索服务器,它支持层面搜索、命中醒目显示和多种
输出格式。在这篇分两部分的文章中,Lucene Java™ 的提交人 Grant Ingersoll 将介绍 Solr 并向您
展示如何轻松地将其表现优异的全文本搜索功能加入到 Web 应用程序中。
一旦用户需要某种信息,就可以立即搜索到这些信息,这种要求再也不是可有可无的了。随着 Google
和类似的复杂搜索引擎的出现,用户希望得到高质量的搜索结果,帮助他们快速、轻易地找到所需的
信息。经理对您的在线购物站点同样抱有很高的期望,要求它能够提供一个可伸缩、高度可用且易于维
护的搜索解决方案,并且安装这个解决方案不应太昂贵。对于您而言,只是希望事业进步,让老板和客
户满意,以及保持头脑清醒。
使用 Apache Solr 可以满足所有的这些要求,它是一种开放源码的、基于 Lucene Java 的搜索服
务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包
括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。您可
以坚持使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr 还拥有
一个活跃的开发者群体,如有需要,您可以随时向他们寻求帮助。
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 的主位置。
图 1. 一个 Solr 管理屏幕示例
关于 Lucene
要了解 Solr 就必须熟悉 Lucene。 Lucene 是一个基于 Java 的高性能文本搜索引擎库,最初由
Doug Cutting 编写,后来被捐赠给 Apache Software Foundation。很多应用程序都利用 Lucene 来增
强自身的搜索功能,因为 Lucene 高速、易用和具有活跃社区的特点。Solr 构建在这些功能之上,使
Lucene 可供企业使用,并具有最小的编程需求。
Solr 基础
因为 Solr 包装并扩展了 Lucene,所以它们使用很多相同的术语。更重要的是,Solr 创建的索引
与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr
可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如 Luke)也可以
使用 Solr 创建的索引。
在 Solr 和 Lucene 中,使用一个或多个 Document 来构建索引。Document 包括一个或多个
Field。Field 包括名称、内容以及告诉 Solr 如何处理内容的元数据。例如,Field 可以包含字符串、数
字、布尔值或者日期,也可以包含您想添加的任何类型。Field 可以使用大量的选项来描述,这些选项
告诉 Solr 在索引和搜索期间如何处理内容。我将在本文中稍后详细讨论这些选项。现在,查看一下表
1 中列出的重要属性的子集:
表 1. 字段属性
属性
名称
说明
index
ed
Indexed Field 可以进行搜索和排序。您还可以在 indexed Field 上运行 Solr 分析过程,此过程可修改内容以
改进或更改结果。下一节提供了关于 Solr 的分析过程的更多信息。
store
d
stored Field 内容保存在索引中。这对于检索和醒目显示内容很有用,但对于实际搜索则不是必需的。例如,很
多应用程序存储指向内容位置的指针而不是存储实际的文件内容。
Solr 的分析过程
您可以在对应用程序内容索引之前运行 Solr 的分析过程来修改这些内容。在 Solr 和 Lucene 中,
Analyzer 包括一个 Tokenizer 和一个或多个 TokenFilter。Tokenizer 负责生成 Token,后者在多数情
况下对应要索引的词。TokenFilter 从 Tokenizer 接受 Token 并且可以在索引之前修改或删除 Token。
例如,Solr 的 WhitespaceTokenizer 根据空白断词,而它的 StopFilter 从搜索结果中删除公共词。其
他类型的分析包括词干提取、同义词扩展和大小写折叠。如果应用程序要求以某种特殊方式进行分析,
则 Solr 所拥有的一个或多个断词工具和筛选器可以满足您的要求。
您还可以在搜索操作期间对查询应用分析。一个总体规则是:应该对查询和要索引的文档运行相同
的分析。不熟悉这些概念的用户常犯的一个错误就是:对文档标记进行词干提取,但不对查询标记进行
词干提取,通常导致零搜索匹配。Solr 的 XML 配置使它可以轻易地使用简单声明创建 Analyzer,本
文稍后会对此作出展示。
有关 Solr 和 Lucene 的分析工具,以及索引结构和其他功能的更多信息,请参阅 参考资料。
示例应用程序
以下各节将使用实际的示例应用程序向您介绍 Solr 的功能。该示例应用程序是一个基于 Web 的
博客界面,您可以使用它来记录条目、给条目指派元数据,然后索引和搜索条目。在索引和搜索过程的
每一步,您都可以选择显示发送到 Solr 的命令。
要查看示例应用程序,请将浏览器指向 http://localhost:8080/dw/index.jsp。如果一切设置正确(如
“设置 Solr” 描述的那样),则您可以看到一个题为 “Sample Solr Blog Search” 的简单用户界面,在
标题的正下方有一些菜单项。当您浏览本文的两个部分时,将会了解到菜单中的所有主题。
索引操作
在 Solr 中,通过向部署在 servlet 容器中的 Solr Web 应用程序发送 HTTP 请求来启动索引和搜
索。Solr 接受请求,确定要使用的适当 SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方
式返回响应。默认配置返回 Solr 的标准 XML 响应。您也可以配置 Solr 的备用响应格式。我将在本文
的第 2 部分向您展示如何定制请求和响应处理。
索引就是接受输入(本例中是博客条目、关键字和其他元数据)并将它们传递给 Solr,从而在 HTTP
Post XML 消息中进行索引的过程。您可以向 Solr 索引 servlet 传递四个不同的索引请求:
add/update 允许您向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添加和更新。
commit 告诉 Solr,应该使上次提交以来所做的所有更改都可以搜索到。
optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比
较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时
较多的过程。
delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询
返回的所有文档。
一个索引示例
浏览到 http://localhost:8080/dw/index.jsp 可以查看索引过程的更多细节。首先为表单中的每个字
段填入适当的条目并按 Submit 按钮。示例应用程序接受条目、创建 Solr 请求并显示请求以便在下一
个屏幕上查看。清单 1 包含了一个 add 命令的例子,当您按下 Submit 按钮时向 Solr 发送这个命令。
剩余83页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1899
- 资源: 3854
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功