1、solr 35配置及应用solr 3.5 配置及应用(一) 一、solr 的简介Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。每个文档由一系列的 Field 构成,每个 Field 表示资源的一个属性。Solr 中的每个 Document 需要有能唯一标识其自身的属性,默认情况下这个属性的名字是 id,在 Schema 配置文件中使用:id进行描述。Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器
2、。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过 http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提 供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。二、solr 3.5 的下载 solr 3.5下载地址:http:/www.apache.org/dist/lucene/solr/ tomcat tomcat-7.0.26 下载:三、solr 3.5的安装 1、解压tomcat-7.0.26 到 e:tomcat-7.0.26下 2、打开t
3、omcat-7.0.26conf修改server.xml 文件html view plaincopy1. 修改默认端口8080,可以不修改,添加字符编码 URIEncoding=UTF-8 否则中文会乱码 3、在apache-solr-3.5.0dist目录下找到apache-solr-3.5.0.war把重命名为solr.war 并上传到tomcat-7.0.26/webapps下。 4、创建一个solr.xml文件, 在tomcat-7.0.14confCatalinalocalhost下创建一个solr.xml文件。内容为:html view plaincopy1. 2. 3. 4. d
4、ocBase:为solr的上传目录 5、把apache-solr-3.5.0example目录下的solr文件夹上传到e:/tomcat-7.0.26目录下.索引文件会默认会放到 e:/tomcat-7.0.26solrdata下. 6、重新tomcat 在浏览器中输入:http:/localhost:8080/ 会出现:welcome to solr solr admin 说明发布已成功!四、solr 3.5与IKAnalyzer 3.2.8分词的整合 1、IKAnalyzer下载地址:IKAnalyzer 3.2.8 2、添加IKAnalyzer3.2.8.jar 把IKAnalyzer3
5、.2.8.jar放到tomcat-7.0.14webappssolrWEB-INFlib下; 3、schema.xml 增加信息 进入目录编辑schema.xml文件,在下添加以下内容:html view plaincopy1. 2. 3. 4. 5. 7. 14. 15. 17. 18. 19. 20. 21. 23. 30. 31. 33. 34. 35. 然后在下添加:html view plaincopy1. 5、重新tomcat 在浏览器中输入:http:/localhost:80/solr/analysis.jsp 进去solr admin显示:solr 3.5 配置及应用(二)
6、在solr 3.5 配置及应用(一) 讲过一了solr 3.5的详细配置,本节我们讲利用solr 的客户端调用solr的应用了!一、利用SolrJ操作solr API 使用SolrJ操作Solr会比利用httpClient来操作Solr要简单。SolrJ是封装了httpClient方法,来操作solr的API的。SolrJ底层还是通过使用httpClient中的方法来完成Solr的操作。 需要的包如下: 1、 apache-solr-solrj-3.5.0.jar 2、commons-httpclient-3.1.jar 3、slf4j-api-1.6.0.jar 4、commons-logg
7、ing-1.1.jar 在solr 3.5的解压包apache-solr-3.5.0apache-solr-3.5.0distapache-solr-solrj-3.5.0.jar 就有这个包。二、Solr理论1、 solr基础因为 Solr 包装并扩展了 Lucene,所以它们使用很多相同的术语。更重要的是,Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码,Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。在 Solr 和 Lucene 中,使用一个或多个 Document 来构建索引。Document
8、包括一个或多个 Field。Field 包括名称、内容以及告诉 Solr 如何处理内容的元数据。例如,Field 可以包含字符串、数字、布尔值或者日期,也可以包含你想添加的任何类型,只需用在solr的配置文件中进行相应的配置即可。Field 可以使用大量的选项来描述,这些选项告诉 Solr 在索引和搜索期间如何处理内容。现在,查看一下表 1 中列出的重要属性的子集:属性名称描述IndexedIndexed Field 可以进行搜索和排序。你还可以在 indexed Field 上运行 Solr 分析过程,此过程可修改内容以改进或更改结果。Storedstored Field 内容保存在索引中。
9、这对于检索和醒目显示内容很有用,但对于实际搜索则不是必需的。例如,很多应用程序存储指向内容位置的指针而不是存储实际的文件内容。2、 solr索引操作在 Solr 中,通过向部署在 servlet 容器中的 Solr Web 应用程序发送 HTTP 请求来启动索引和搜索。Solr 接受请求,确定要使用的适当 SolrRequestHandler,然后处理请求。通过 HTTP 以同样的方式返回响应。默认配置返回 Solr 的标准 XML 响应。你也可以配置 Solr 的备用响应格式,如json、csv格式的文本。索引就是接受输入元数据(数据格式在schema.xml中进行配置)并将它们传递给 So
10、lr,从而在 HTTP Post XML 消息中进行索引的过程。你可以向 Solr 索引 servlet 传递四个不同的索引请求:add/update 允许您向 Solr 添加文档或更新文档。直到提交后才能搜索到这些添加和更新。commit 告诉 Solr,应该使上次提交以来所做的所有更改都可以搜索到。optimize 重构 Lucene 的文件以改进搜索性能。索引完成后执行一下优化通常比较好。如果更新比较频繁,则应该在使用率较低的时候安排优化。一个索引无需优化也可以正常地运行。优化是一个耗时较多的过程。delete 可以通过 id 或查询来指定。按 id 删除将删除具有指定 id 的文档;按
11、查询删除将删除查询返回的所有文档。Lucene中操作索引也有这几个步骤,但是没有更新。Lucene更新是先删除,然后添加索引。因为更新索引在一定情况下,效率没有先删除后添加的效率好。3、 搜索添加文档后,就可以搜索这些文档了。Solr 接受 HTTP GET 和 HTTP POST 查询消息。收到的查询由相应的 SolrRequestHandler 进行处理。solr查询参数描述:参数描述示例qSolr 中用来搜索的查询。有关该语法的完整描述,请参阅参考资料。可以通过追加一个分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。默认的排序是 score desc,指按记分降序排
12、序。q=myField:Java AND otherField:developerWorks; date asc此查询搜索指定的两个字段,并根据一个日期字段对结果进行排序。start将初始偏移量指定到结果集中。可用于对结果进行分页。默认值为 0。start=15返回从第 15 个结果开始的结果。rows返回文档的最大数目。默认值为 10。rows=25,返回25个结果集fq提供一个可选的筛选器查询。查询结果被限制为仅搜索筛选器查询返回的结果。筛选过的查询由 Solr 进行缓存。它们对提高复杂查询的速度非常有用。任何可以用 q 参数传递的有效查询,排序信息除外。hl当 hl=true 时,在查询
13、响应中醒目显示片段。默认为 false。参看醒目显示参数(见参考资料)。hl=truefl作为逗号分隔的列表指定文档结果中应返回的 Field 集。默认为 “*”,指所有的字段。“score” 指还应返回记分。*,scoresort排序,对查询结果进行排序,参考sort=date asc,price desc4、 solr模式上面有提到schema.xml这个配置,这个配置可以在你下载solr包的安装解压目录的apache-solr-3.4.0examplesolrconf中找到,它就是solr模式关联的文件。打开这个配置文件,你会发现有详细的注释。模式组织主要分为三个重要配置types 部分
14、是一些常见的可重用定义,定义了 Solr(和 Lucene)如何处理 Field。也就是添加到索引中的xml文件属性中的类型,如int、text、date等fileds是你添加到索引文件中出现的属性名称,而声明类型就需要用到上面的types其他配置有uniqueKey 唯一键,这里配置的是上面出现的fileds,一般是id、url等不重复的。在更新、删除的时候可以用到。defaultSearchField默认搜索属性,如q=solr就是默认的搜索那个字段solrQueryParser查询转换模式,是并且还是或者(and/or)5、 索引配置Solr 性能因素,来了解与各种更改相关的性能权衡。表
15、 1 概括了可控制 Solr 索引处理的各种因素:因素描述useCompoundFile通过将很多 Lucene 内部文件整合到单一一个文件来减少使用中的文件的数量。这可有助于减少 Solr 使用的文件句柄数目,代价是降低了性能。除非是应用程序用完了文件句柄,否则 false 的默认值应该就已经足够。mergeFactor决定低水平的 Lucene 段被合并的频率。较小的值(最小为 2)使用的内存较少但导致的索引时间也更慢。较大的值可使索引时间变快但会牺牲较多的内存。maxBufferedDocs在合并内存中文档和创建新段之前,定义所需索引的最小文档数。段 是用来存储索引信息的 Lucene
16、文件。较大的值可使索引时间变快但会牺牲较多的内存。maxMergeDocs控制可由 Solr 合并的 Document 的最大数。较小的值 ( 10,000) 最适合于具有大量更新的应用程序。maxFieldLength对于给定的 Document,控制可添加到 Field 的最大条目数,进而截断该文档。如果文档可能会很大,就需要增加这个数值。然而,若将这个值设置得过高会导致内存不足错误。unlockOnStartupunlockOnStartup 告知 Solr 忽略在多线程环境中用来保护索引的锁定机制。在某些情况下,索引可能会由于不正确的关机或其他错误而一直处于锁定,这就妨碍了添加和更新。
17、将其设置为 true 可以禁用启动锁定,进而允许进行添加和更新。6、 查询处理配置 标记定义了可组合在一起形成一个查询的子句数量的上限。对于大多数应用程序而言,默认的 1024 就应该已经足够;然而,如果应用程序大量使用了通配符或范围查询,增加这个限值将能避免当值超出时,抛出 TooManyClausesException。若应用程序预期只会检索 Document 上少数几个 Field,那么可以将 属性设置为 true。懒散加载的一个常见场景大都发生在应用程序返回和显示一系列搜索结果的时候,用户常常会单击其中的一个来查看存储在此索引中的原始文档。初始的 显示常常只需要显示很短的一段信息。若考
18、虑到检索大型 Document 的代价,除非必需,否则就应该避免加载整个文档。 部分负责定义与在 Solr 中发生的事件相关的几个选项。Searcher 的 Java 类来处理 Query 实例。要改进这一设计和显著提高性能,把这些新的 Searcher 联机以便为现场用户提供查询服务之前,先对它们进行 “热身”。 部分中的 选项定义 newSearcher 和 firstSearcher 事件,您可以使用这些事件来指定实例化新搜索程序或第一个搜索程序时应该执行哪些查询。如果应用程序期望请求某些特定的查询,那么在创建新搜索程序或第一 个搜索程序时就应该反注释这些部分并执行适当的查询。solrc
19、onfig.xml 文件的剩余部分,除 之外,涵盖了与 缓存、复制 和 扩展或定制 Solr 有关的项目。admin 部分让您可以定制管理界面。有关配置 admin 节的更多信息,请参看solrconfig.xml 文件中的注释。7、 监视、记录和统计数据用于监视、记录和统计数据的 Solr 管理选项菜单名URL描述Statisticshttp:/localhost:8080/solr/admin/stats.jspStatistics 管理页提供了与 Solr 性能相关的很多有用的统计数据。这些数据包括:关于何时加载索引以及索引中有多少文档的信息。关于用来服务查询的 SolrRequestH
20、andler 的有用信息。涵盖索引过程的数据,包括添加、删除、提交等的数量。缓存实现和 hit/miss/eviction 信息Infohttp:/localhost:8080/solr/admin/registry.jsp有关正在运行的 Solr 的版本以及在当前实现中进行查询、更新和缓存所使用的类的详细信息。此外,还包括文件存于 Solr subversion 存储库的何处的信息以及对该文件功能的一个简要描述。Distributionhttp:/localhost:8080/solr/admin/distributiondump.jsp显示与索引发布和复制有关的信息。更多信息,请参见 “发
21、布和复制” 一节。Pinghttp:/localhost:8080/solr/admin/ping向服务器发出 ping 请求,包括在 solrconfig.xml 文件的 admin 部分定义的请求。Logginghttp:/localhost:8080/solr/admin/logging.jsp让您可以动态更改当前应用程序的日志记录等级。更改日志记录等级对于调试在执行过程中可能出现的问题非常有用。propertieshttp: /localhost:8080/solr/admin/get-properties.jsp显示当前系统正在使用的所有 Java 系统属性。Solr 支持通过命令行
22、的系统属性替换。有关实现此特性的更多信息,请参见 solrconfig.xml 文件。Thread dumphttp:/localhost:8080/solr/admin/threaddump.jspthread dump 选项显示了在 JVM 中运行的所有线程的堆栈跟踪信息。8、 智能缓存智能缓存是让 Solr 得以成为引人瞩目的搜索服务器的一个关键性能特征。Solr 提供了四种不同的缓存类型,所有四种类型都可在 solrconfig.xml 的 部分中配置。solrconfig.xml 文件中所用的标记名列出了这些缓存类型:缓存标记名描述能否自热filterCache通过存储一个匹配给定查询的文档 id 的无序集,过滤器让 Solr 能够有效
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1