资源预览内容
第1页 / 共50页
第2页 / 共50页
第3页 / 共50页
第4页 / 共50页
第5页 / 共50页
第6页 / 共50页
第7页 / 共50页
第8页 / 共50页
第9页 / 共50页
第10页 / 共50页
亲,该文档总共50页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Solr 调研总结开发类型 全文检索相关开发Solr 版本 4.2文件内容 本文介绍 solr 的功能使用及相关注意事项;主要包括以下内容: 环境搭建及调试、两个核心配置文件介绍、中文分词器配置、维护索引、查询索引,高亮显示、拼写检查、搜索建议、分组统计、自动聚类、相似匹配、拼音检索等功能的使用方法。在代码文本框中如有显示不全的,请在文本框中按 Ctrl+A 再复制.版本 作者/修改人 日期V1.0 gzk 2013-06-041. Solr 是什么?Solr 它是一种开放源码的、基于 Lucene Java 的搜索服务器,易于加入到 Web 应用程序中。Solr 提供了层面搜索(就是统计)、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 等格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。可以使用 Solr 的表现优异的基本搜索功能,也可以对它进行扩展从而满足企业的需要。Solr 的特性包括: 高级的全文搜索功能 专为高通量的网络流量进行的优化 基于开放接口(XML 和 HTTP)的标准 综合的 HTML 管理界面 可伸缩性能够有效地复制到另外一个 Solr 搜索服务器 使用 XML 配置达到灵活性和适配性 可扩展的插件体系2. Lucene 是什么?Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta(雅加达) 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于 Lucene ,比如Eclipse 帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要把你要索引的数据格式转化的文本格式,Lucene 就能对你的文档进行索引和搜索。3. Solr vs LuceneSolr 与 Lucene 并不是竞争对立关系,恰恰相反 Solr 依存于 Lucene,因为Solr 底层的核心技术是使用 Lucene 来实现的,Solr 和 Lucene 的本质区别有以下三点:搜索服务器,企业级和管理。Lucene 本质上是搜索库,不是独立的应用程序,而 Solr 是。Lucene 专注于搜索底层的建设,而 Solr 专注于企业应用。Lucene 不负责支撑搜索服务所必须的管理,而 Solr 负责。所以说,一句话概括 Solr: Solr 是 Lucene 面向企业搜索应用的扩展。Solr 与 Lucene 架构图:Solr 使用 Lucene 并且扩展了它! 一个真正的拥有动态字段(Dynamic Field)和唯一键( Unique Key)的数据模式(Data Schema) 对 Lucene 查询语言的强大扩展! 支持对结果进行动态的分组和过滤 高级的,可配置的文本分析 高度可配置和可扩展的缓存机制 性能优化 支持通过 XML 进行外部配置 拥有一个管理界面 可监控的日志 支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution)4.搭建并调试 Solr4.1 安装虚拟机Solr 必须运行在 Java1.6 或更高版本的 Java 虚拟机中,运行标准 Solr 服务只需要安装 JRE 即可,但如果需要扩展功能或编译源码则需要下载 JDK 来完成。可以通过下面的地址下载所需 JDK 或 JRE : OpenJDK ( http:/java.sun.com/j2se/downloads.html ) Sun (http:/java.sun.com/j2se/downloads.html ) IBM (http:/www.ibm.com/developerworks/java/jdk/ ) Oracle (http:/www.oracle.com/technology/products/jrockit/index.html )安装 步骤请参考相应的帮助文档。4.2 下载 Solr本文针对 Solr4.2 版本进行调研的,下文介绍内容均针对 Solr4.2 版本,如与Solr 最新版本有出入请以官方网站内容为准。Solr 官方网站下载地址:http:/lucene.apache.org/solr/4.3 下载并设置 Apache AntSolr 是使用 Ant 进行管理的源码, Ant 是一种基于 Java 的 build 工具。理论上来说,它有些类似于 Maven 或者是 C 中的 make。下载后解压出来后,进行环境变量设置。ANT_HOME:E:Workapache-ant1.9.1 (这里为你自己解压缩的目录) PATH: %ANT_HOME%bin (这个设置是为了方便在 dos 环境下操作)查看是否安装成功,在命令行窗口中输入命令 ant,若出现结果: 说明 ant 安装成功!因为 ant 默认运行 build.xml 文件,这个文件需要我们建立。现在就可以进行 build Solr 源码了。在命令行窗口中进入到你的 Solr 源码目录,输入 ant 会出现当前 build.xml 使用提示信息。其它的先不用管它,我们只要针对我们使用的 IDE 进行 build 就行了,如果使用 eclipse 就在命令行输入: ant eclipse.如果使用 IntelliJ IDEA 就在命令行输入:ant idea。这样就能进行 build 了。黑窗口里提示这个。失败。为什么呢,最后我发现是因为下载的 ant 中少了一个 jar 就是这apache-ivy(下载地址: http:/ant.apache.org/ivy/)这东东名子真怪 ivy 是 ant 管理 jar 依赖关系的。当第一次 bulid 时 ivy 会自动把 build 中的缺少的依赖进行下载。网速慢的第一次 build 要好久的。下载一个 jar 就行把 jar 放到 ant 的 lib 下(E:Workapache-ant1.9.1lib)这样再次运行 ant 就会成功了。到现在才可以进行 Solr 的代码调试。4.4 配置并运行 Solr 代码不管用什么 IDE 首选都要设置 Solr Home 在 IDE 的 JVM 参数设置 VM arguments 写入 -Dsolr.solr.home=solr/example/solr 一般就行了.不行也可以使用绝对路径.solr 使用 StartSolrJetty 文件作为入口文件进行调试代码,在这里可以设置服务器使用的端口和 solr 的 webapps 目录.一般都不用设置,默认的就可以进行调试.Solr Home 也能可在代码中设置一样好用. System.setProperty(solr.solr.home, E:Worksolr-4.2.0-src-ideasolrexamplesolr);目前是使用自带的一个 example 作为 solr 配置的根目录,如果你有其他的solr 配置目录,设置之即可。点击 run 即可,debug 也是一样可以用了。没有别的问题就应该能运行了.注意 servlet 容器使用的端口,如查提示:FAILED SocketConnector0.0.0.0:8983: java.net.BindException: Address already in use: JVM_Bind 就说明当前端口占用中.改一下就可以了.如果没有报错启动成功后就可以在浏览器中输入地址: http:/localhost:8983/solr/ 就可以看到如下界面到这里 Solr 就成功配置并运行了.要是想跟代码调试在启动时在这个方法里点断点就可以 Initializer 的 initialize()方法如果想从浏览器中找断点调试就要到SolrDispatchFilter 的 doFilter 方法中点断点了.注:IE9 在兼容模式下有 bug,必须设置为非兼容模式。5.Solr 基础因为 Solr 包装并扩展了 Lucene,所以它们使用很多相同的术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。在 Solr 和 Lucene 中,使用一个或多个 Document 来构建索引。Document 包括一个或多个 Field。Field 包括名称、内容以及告诉 Solr 如何处理内容的元数据。例如,Field 可以包含字符串、数字、布尔值或者日期,也可以包含你想添加的任何类型,只需用在 solr 的配置文件中进行相应的配置即可。Field 可以使用大量的选项来描述,这些选项告诉 Solr 在索引和搜索期间如何处理内容。现在,查看一下表 1 中列出的重要属性的子集:属性名称 描述Indexed Indexed Field 可以进行搜索和排序。你还可以在 indexed Field 上运行 Solr 分析过程,此过程可修改内容以改进或更改结果。Stored stored Field 内容保存在索引中。这对于检索和醒目显示内容很有用,但对于实际搜索则不是必需的。例如,很多应用程序存储指向内容位置的指针而不是存储实际的文件内容。5.1 模式配置 Schema.xml schema.xml 这个配置文件可以在你下载 solr 包的安装解压目录的solrexamplesolrcollection1conf 中找到,它就是 solr 模式关联的文件。打开这个配置文件,你会发现有详细的注释。模式组织主要分为三个重要配置 5.1.1. types 部分是一些常见的可重用定义,定义了 Solr(和 Lucene)如何处理 Field。也就是添加到索引中的 xml 文件属性中的类型,如 int、text、date 等.参数说明:属性 描述name 标识而已class 和其他属性决定了这个 fieldType 的实际行为。sortMissingLast 设置成 true 没有该 field 的数据排在有该 field 的数据之后,而不管请求时的排序规则, 默认是设置成 false。sortMissingFirst 跟上面倒过来呗。 默认是设置成 falseanalyzer 字段类型指定的分词器type 当前分词用用于的操作.index 代表生成索引时使用的分词器 query代码在查询时使用的分词器tokenizer 分词器类filter 分词后应用的过滤器 过滤器调用顺序和配置相同.5.1.2. fileds是你添加到索引文件中出现的属性名称,而声明类型就需要用到上面的types field: 固定的字段设置 dynamicField: 动态的字段设置,用于后期自定义字段,*号通配符.例如: test_i就是 int 类型的动态字段.还有一个特殊的字段 copyField,一般用于检索时用的字段这样就只对这一个字段进行索引分词就行了 copyField 的 dest 字段如果有多个 source 一定要设置multiValued=true,否则会报错的字段属性说明:属性 描述name 字段类型名class java 类名indexed 缺省 true。 说明这个数据应被搜索和排序,如果数据没有indexed,则 stored 应是 true。stored 缺省 true。说明这个字段被包含在搜索结果中是合适的。如果数据没有 stored,则 indexed 应是 true。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号