ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:109.22KB ,
资源ID:10331858      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10331858.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(施磊磊的双周汇报书面版10.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

施磊磊的双周汇报书面版10.docx

1、施磊磊的双周汇报书面版10双周汇报Solr学习笔记Apache Solr 是一个开源的搜索服务器,Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。定制 Solr 索引的实现方法很简单,用 POST 方法向 Solr 服务器发送一个描述所有 Field 及其内容的 XML 文档就可以了。定制搜索的时候只需要发送 HTTP GET 请求即可,然后对 Solr 返回的信息进行重新布局,以产生利于用户理解的页面内容布局。Solr 1.3 版本开始支持从数据库(通过 JDBC)、RSS 提要、Web 页面和文件中导入数据,但是不直接支持从二进制文件格式中提取

2、内容,比如 MS Office、Adobe PDF 或其他专有格式。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用 Solr 创建的索引Solr的特性包括: 高级的全文搜索功能 专为高通量的网络流量进行的优化 基于开放接口(XML和HTTP)的标准 综合的HTML管理界面 可伸缩性能够有效地复制到另外一个Solr搜索服务器 使用XML配置达到灵活性和适配性 可扩展的插件体系S

3、olr使用Lucene并且进行了扩展 一个真正的拥有动态域(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema) 对Lucene查询语言的强大扩展! 支持对结果进行动态的分组和过滤 高级的,可配置的文本分析 高度可配置和可扩展的缓存机制 性能优化 支持通过XML进行外部配置 拥有一个管理界面 可监控的日志 支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution)Schema(模式) 定义域类型和文档的域 能够驱动智能处理 声明式的Lucene分析器规范 动态域能够随时增加域 拷贝域

4、功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域 显式类型能够减少对域类型的猜测 能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置查询 拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口 高亮的上下文搜索结果 基于域值和显式查询的片段式搜索(Faceted Search) 对查询语言增加了排序规范 常量的打分范围(Constant scoring range)和前缀式查询没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制 函数查询(Function Query)-通过关于一个域的数值或顺序的函

5、数对打分进行影响 性能优化核心 可插拔的查询句柄(Query Handler)和可扩展的XML数据格式 使用唯一键的域能够增强文档唯一性 能够高效地进行批量更新和删除 用户可配置的文档索引变化触发器(命令) 并发控制的搜索器 能够正确处理数字类型,从而能够进行排序和范围搜索 能够控制缺失排序域的文档 支持搜索结果的动态分组缓存 可配置的查询结果,过滤器,和文档缓存实例 可插拔的缓存实现 后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求。 后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器

6、变化的时候高速缓存常查询的结果 快速和小的过滤器实现 支持自动热启的用户级别的缓存复制 能够将使用rsync传输时改变的索引部分有效的发布 使用拉策略(Pull Strategy)来简化增加搜索器 可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择管理接口 能够对缓存使用,更新和查询进行综合统计 文本分析调试器,能够显示每个分析器每个阶段的结果 基于WEB的查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等Solr服务原理Solr对外提供标准的http接口来实现对数据的索引的增加、删除、修改、查询。在Solr中,用户通过向部署

7、在servlet 容器中的Solr Web应用程序发送 HTTP 请求来启动索引和搜索。Solr接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。默认配置返回Solr的标准 XML 响应,也可以配置Solr的备用响应格式。索引可以向Solr索引servlet传递四个不同的索引请求:1) add/update允许向Solr添加文档或更新文档。直到提交后才能搜索到这些添加和更新。2) commit 告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。3) optimize 重构 Lucene 的文件以改进搜索性能。索引完成后

8、执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。4) delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按查询删除将删除查询返回的所有文档。要实现添加文档索引则只需要调用搜索接口以HTTPPOST的方式提交XML报文。(索引接口:http:/master:8080/solr/update),下面是添加文档的示例报文:注:多核心时为这个地址http:/master:8080/solr/core0/update/TWINX2048-3200PROCORSAIRXMS2GB(

9、2x1GB)184-PinDDRSDRAMUnbufferedDDR400(PC3200)DualChannelKitSystemMemory-RetailCorsairMicrosystemsInc.electronicsmemoryCASlatency2,2-3-3-6timing,2.75v,unbuffered,heat-spreader1855trueVS1GB400C3CORSAIRValueSelect1GB184-PinDDRSDRAMUnbufferedDDR400(PC3200)SystemMemory-RetailCorsairMicrosystemsInc.electr

10、onicsmemory74.997true搜索要实现搜索则只需要调用搜索接口发送HTTPGET,示例:http:/master:8080/solr/select?indent=on&version=2.2&q= solr&start=0&rows=10&fl=*%2Cscore&qt=standard&wt=standard注:多核心时为这个地址http:/master:8080/solr/core0/select/示例中,查询词“ipad”的请求被提交,要求返回10个结果。想知道更多有关各种可选查询选项的信息,请参看下文的“搜索语法”部分。返回的搜索结果报文:06100*,scoretrue

11、content:facetedbrowsing1.058217http:/localhost/myBlog/solr-rocks-again.htmlSolrisGreatsolr,lucene,enterprise,search,greatnessSolrhassomereallygreatfeatures,likefacetedbrowsingandreplicationSolrhassomereallygreatfeatures,likefacetedbrowsingandreplication2007-01-07T05:04:00.000Zsolr,lucene,enterprise,

12、search,greatness8SolrisGreathttp:/localhost/myBlog/solr-rocks-again.htmlSolrhassomereallygreatfeatures,likefacetedbrowsingandreplication源码结构目录结构说明我们下载的Solr包后,进入Solr所在的目录,我们可以看到以下几个目录:build、client、dist、example、lib、site、src。下面分别对其进行介绍。1) build:该目录是在ant build过程中生成的,其中包含了未被打包成jar或是war的class文件以及一些文档文件。2)

13、 client:该目录包含了特定语言的Solr客户端API,使得使用其他语言的用户能通过HTTP用XML与Solr进行通话。现在该目录里面虽然包含javascript、python、ruby三个子目录,但是到目前为止只包含一部分的ruby的代码,其他语言仍是空的。另外,Solr的Java客户端称为SolrJ,其代码位于src/solrj目录下面。在之后的文章中我会详细介绍Solr客户端的使用。3) dist:该目录包含build过程中产生的war和jar文件,以及相关的依赖文件。还记得上一篇文章中,我们在build 1.4版本的Solr源代码后需要部署example吗?其实就是将该目录下面的a

14、pache-solr-1.4.war部署到Jetty上面去,并重命名为solr.war。4) example:这个目录实际上是Jetty的安装目录。其中包含了一些样例数据和一些Solr的配置。其中一些子目录也比较重要,这里也对它们稍作介绍。 example/etc:该目录包含了Jetty的配置,在这里我们可以将Jetty的默认端口从8983改为8080端口。 将其中的8983端口换成8080端口。注意更改端口后启动Jetty可能会提示你没有权限,你需要使用sudo java -jar start.jar来运行。 example/multicore:该目录包含了在Solr的multicore中设

15、置的多个home目录。在之后的文章中我会对其进行介绍。 example/solr:该目录是一个包含了默认配置信息的Solr的home目录。详见下面的“solr home说明” example/webapps:Jetty的webapps目录,该目录通常用来放置Java的Web应用程序。在Solr中,前面提到的solr.war文件就部署在这里。5) lib:该目录包含了所有Solr的API所依赖的库文件。其中包括Lucene,Apache commons utilities和用来处理XML的Stax库。6) site:该目录仅仅包含了Solr的官网的网页内容,以及一些教程的PDF文档。7) src

16、:该目录包含了Solr项目的整个源代码。这里对其各个子目录也做相应的介绍。 src/java:该目录存放的是Solr使用Java编写的源代码。 src/scripts:该目录存放的是配置Solr服务器的Unix Bash Shell脚本,在后面介绍多服务器配置中将会有重要的作用。 src/solrj:前面提到过该目录存放的是Solr的Java版本的客户端代码。 src/test:该目录存放的是测试程序的源代码和测试文件。 src/webapp:该目录存放的是管理Solr的Web页面,包括Servlet和JSP文件,其构成了前面提到的WAR文件。管理Solr的JSP页面在web/admin目录下

17、面,如果你有兴趣折腾Solr可以找到相应的JSP的页面对其进行设置Solr home说明所谓的Solr home目录实际上是一个运行的Solr实例所对应的配置和数据(Lucene索引)。在上一篇文章中我提到过在Solr的example/solr目录就是一个Solr用做示例的默认配置home目录。实际上example/multicore也是一个合法的Solr home目录,只不过是用来做mult-core设置的。那么我们来看看example/solr这个目录里面都有些什么。example/solr目录下主要有以下一些目录和文件:1) bin:如果你需要对Solr进行更高级的配置,该目录建议用来存

18、放Solr的复制脚本。2) conf :该目录下面包含了各种配置文件,下面列出了两个最为重要的配置文件。其余的.txt和.xml文件被这两个文件所引用,如用来对文本进行特殊的处理。 conf/schema.xml:该文件是索引的schema,包含了域类型的定义以及相关联的analyzer链。 conf/solrconfig.xml:该文件是Solr的主配置文件。 conf/xslt:该目录包含了各种XSLT文件,能将Solr的查询响应转换成不同的格式,如:Atom/RSS等。3) data:包含了Lucene的二进制索引文件。4) lib:该目录是可选的。用来放置附加的Java JAR文件,S

19、olr在启动时会自动加载该目录下的JAR文件。这就使得用户可以对Solr的发布版本(solr.war)进行扩展。如果你的扩展并不对Solr本身进行修改,那么就可以将你的修改部署到JAR文件中放到这里。Solr是如何找到运行所需要的home目录的呢?Solr首先检查名为solr.solr.home的Java系统属性,有几种不同的方式来设置该Java系统属性。一种不管你使用什么样的Java应用服务器或Servlet引擎都通用的方法是在调用Java的命令行中进行设置。所以,你可以在启动Jetty的时候显式地指定Solr的home目录java -Dsolr.solr.home=solr/ -jar s

20、tart.jar。另一种通用的方法是使用JNDI,将home目录绑定到java:comp/env/solr/home。并向src/webapp/web/WEB-INF/web.xml添加以下一段代码:1 2 solr/home3 solr/4 java.lang.String5 实际上这段XML在web.xml文件中已经存在,你只需要把原来注释掉的xml取消注释,添加你所要指向的home目录即可。因为修改了web.xml文件,所以你需要运行ant dist-war来重新打包之后再部署WAR文件。最后,如果Solr的home目录既没有通过Java系统属性指定也没有通过JNDI指定,那么他将默认指

21、向solr/。在产品环境中,我们必须设置Solr的home目录而不是让其默认指向solr/。而且应该使用绝对路径,而不是相对路径,因为你有可能从不同的目录下面启动应用服务器。注:Jetty 是一个开源的servlet容器,它为基于Java的web内容,例如JSP和servlet提供运行环境。Jetty是使用Java语言编写的,它的API以一组JAR包的形式发布。开发人员可以将Jetty容器实例化成一个对象,可以迅速为一些独立运行(stand-alone)的Java应用提供网络和web连接。solr的各包的说明分析Apache Solr的各个包,力图详细地分析Solr的设计和架构。Apache

22、Solr由12个包组成,如下:1. org.apache.solr.analysis2. org.apache.solr.core3. org.apache.solr.request4. org.apache.solr.schema5. org.apache.solr.search6. org.apache.solr.search.function7. org.apache.solr.servlet8. org.apache.solr.tst9. org.apache.solr.update10. org.apache.solr.util11. org.apache.solr.util.tes

23、t12. org.apache.solr.util.xlst我们先从使用者的角度出发,最先看到的当然是servlet,因为Solr本身是个独立的网络应用程序,需要在Servlet容器中运行来提供服务,所以servlet是用户接触的最外层。我们看看org.apache.solr.servlet包。这个包很简单,只有两个类:SolrServlet和SolrUpdateServlet.我们很容易从类名中猜出这两个类的用途。SolrServlet类继承HttpServlet类,只有四个方法: init() destroy() doGet() doPost()SolrServlet类中除了普通的Java

24、类对象(包括Servlet相关的)外,有四个Solr本身的类,还有一个Solr本身的异常。其中两个类和一个异常属于org.apache.solr.core包,两个类属于org.apache.solr.request包。属于core包的有: Config: SolrCore:属于request包的有: SolrQueryResponse: QueryResponseWriter:分析一下这个SolrServlet类。首先servlet会调用init()方法进行初始化:通过Context查找java:comp/env/solr/home来确定Solr的主目录(home),接着调用Config.setInstanceDir(home)方法设置这个实例的目录。然后通过SolrCore.getSolrCore()来获得一个SolrCore实例。destroy()方法将会在Servlet对象销毁时调用,仅仅调用core.close()关闭SolrCore实例。当用户请求进来时doPost()简单地将任务交给doGet()完成,主要的任务由doGe

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1