Solr 是一种可供企业使用的、基于 Lucene 的搜索服务器,它支持层面搜索、命中醒目显示和多种输出格式。在这篇分两部分的文章中,Lucene Java™ 的提交人 Grant Ingersoll 将介绍 Solr 并向您展示如何轻松地将其表现优异的全文本搜索功能加入到 Web 应用程序中。 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 参考资料 。
Luke )也可以使用 Solr 创建的索引。表 1. 字段属性 Solr 的分析过程 参考资料 。示例应用程序 设置 Solr ” 描述的那样),则您可以看到一个题为 “Sample Solr Blog Search” 的简单用户界面,在标题的正下方有一些菜单项。当您浏览本文的两个部分时,将会了解到菜单中的所有主题。add/update  允许您向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添加和更新。commit  告诉 Solr,应该使上次提交以来所做的所有更改都可以搜索到。optimize  重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。delete  可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。一个索引示例 Submit  按钮。示例应用程序接受条目、创建 Solr 请求并显示请求以便在下一个屏幕上查看。清单 1 包含了一个 add 命令的例子,当您按下 Submit  按钮时向 Solr 发送这个命令。清单 1. Solr add 命令样例 
实践索引 Index  按钮旁边的 “Display XML...” 复选框,跳过 “Solr XML Command” 页面。本文附带的 样例文件  包含了一个很多这些示例中使用的索引版本。参考资料  中的 “Solr Wiki” 参考。关于查询语法的一点注意 参考资料 。在本文的第 2 部分,我将介绍管理界面中的一些有助于调试查询语法和结果的工具。
布尔运算符 :默认情况下,用于合并搜索条目的布尔运算符是 OR。将它设为 AND 要求匹配的文档中出现所有的条目。结果数目 :指定返回的最大结果数目。开始 :结果集中开始的偏移量。此参数可用于分页。醒目显示 :醒目显示匹配文档字段的条目。参考 清单 2  底部的  节点。醒目显示的条目标记为 。清单 2. 搜索结果示例 
参考资料  中的 “Solr Wiki” 参考可以查看参数的完整清单。表 2. 醒目显示的查询参数 参考资料  中的 “Lucene QueryParser Syntax”。可以通过追加一个分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。默认的排序是 score desc,指按记分降序排序。q  参数传递的有效查询,排序信息除外。参考资料 )。一个文本区域,您可以在其中输入查询,根据索引中的 all 字段发布此查询。将 all 字段看作一连串已索引的所有其他字段。(稍后将对此作详细介绍。) 一个可以用于分层面的字段下拉列表。此处并未列出所有的已索引字段,其原因马上就会得到解释。 Submit  与生成的查询一起传递给 Solr。博客应用程序解析结果并返回类似图 2 中的结果:图 2. 层面浏览结果示例 Facet  关键字作为一个新关键字。如果原始查询是 q=Solr 而层面字段是 keywords,并且单击图 2 中的 replication 链接,则新查询将会是 q=Solr AND keywords:replication 。参考资料  中的 “Solr Wiki” 参考,了解如何简单地配置 Tomcat 和其他容器,以便为每个容器使用多个部署。)类型 本文前面的内容中 ,我简要介绍了 Solr 的分析过程的基础。仔细观察一下 text 字段类型声明,您可以看见 Solr 管理分析的细节。清单 3 给出了 text 字段类型声明:清单 3. 文本字段类型声明 类属性 
根据空白进行断词,然后删除所有的公共词(StopFilterFactory) 使用破折号处理特殊的大小写、大小写转换等等。(WordDelimiterFilterFactory);将所有条目处理为小写(LowerCaseFilterFactory) 使用 Porter Stemming 算法进行词干提取(EnglishPorterFilterFactory) 删除所有的副本(RemoveDuplicatesTokenFilterFactory) 参考资料  中的 “More Info On Solr Analysis”,了解关于分析的更多选项以及如何使用其他 Analyzer 的信息。字段 清单 4. 博客应用程序的声明字段 清单 3  中声明的 Analyzer 来分析 text 字段。all 字段如何处理?all 字段是一个 text 字段,如 title 或 content 一样,但是它包含了连接在一起的几个字段的内容,便于使用备用搜索机制(记住层面搜索使用的是 all 字段)。表 1  中您已经了解了 indexed 和 stored 的意义。multiValued 属性是一个特殊的例子,指 Document 可以拥有一个相同名称添加了多次的 Field。比如在我们的示例中,可以多次添加 keywords。omitNorms 属性告诉 Solr(和 Lucene)不要存储规范。省略规范对于节省不影响记分的 Field 的内存非常有用,比如那些用于计算层面的字段。其他声明 示例应用程序  演示了这些功能和介绍了如何为 Solr 格式化命令。学习 “用 Lucene 加速 Web 搜索应用程序的开发 ”(Deng Peng Zhou,developerWorks,2006 年 8 月):了解关于 Lucene 搜索库的更多信息,该库用作 Solr 的基础库。 “Parsing, indexing, and searching XML with Digester and Lucene ”(Otis Gospodneti,developerWorks,2003 年 6 月):Lucene 初探。 Solr 主页 :学习教程、浏览 Javadocs 并随时关注 Solr 社区。Solr Wiki :查看 Wiki 获取关于 Solr 运作的众多文档。Solr 分析 :了解关于 Solr 的分析器、断词工具和标记筛选器工作原理的更多信息。Lucene QueryParser Syntax :了解关于 Solr 和 Lucene 的查询解析器语法的更多信息。The Porter Stemming Algorithm :了解关于 Solr 使用的词干提取算法的更多信息。Public Websites using Solr :使用 Solr 功能的 Web 站点的清单。Lucene Java 主页 :探索 Solr 的起源。Lucene In Action  developerWorks Java 技术专区 :关于 Java 编程各个方面的数百篇文章。获得产品和技术 Apache Mirrors : 下载 Solr 1.1 或最新版本。下载 Tomcat :参阅 Solr Wiki 的 Solr Tomcat  部分,了解有关同时运行 Solr 和 Tomcat 的具体细节。下载 Ant 。下载 Firefox 。下载 JDK 1.5 。获取 Luke :一种检查 Lucene 索引的便捷工具。对索引中的内容有所疑问或查询不能正常运行时请咨询 Luke。下载 curl :帮助从命令行提交 HTTP 请求。讨论 Solr Mailing Lists :成为 Solr 社区的一员。 
 
 
  
运维网声明 
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003运维网