32. protected="protwords.txt"/>
33.
34.
35.
然后在下添加:
[html]viewplaincopy
1.
5、重新tomcat在浏览器中输入:
http:
//localhost:
80/solr/analysis.jsp 进去 solradmin 显示:
solr3.5配置及应用
(二)
在 solr3.5配置及应用
(一)讲过一了 solr3.5的详细配置,本节我们讲利用solr的客户端调用solr的应用了!
一、利用SolrJ操作solrAPI
使用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-logging-1.1.jar
在solr3.5的解压包 apache-solr-3.5.0\apache-solr-3.5.0\dist\apache-solr-solrj-3.5.0.jar就有这个包。
二、Solr理论
1、solr基础
因为Solr包装并扩展了Lucene,所以它们使用很多相同的术语。
更重要的是,Solr创建的索引与Lucene搜索引擎库完全兼容。
通过对Solr进行适当的配置,某些情况下可能需要进行编码,Solr可以阅读和使用构建到其他Lucene应用程序中的索引。
在Solr和Lucene中,使用一个或多个Document来构建索引。
Document包括一个或多个Field。
Field包括名称、内容以及告诉Solr如何处理内容的元数据。
例如,Field可以包含字符串、数字、布尔值或者日期,也可以包含你想添加的任何类型,只需用在solr的配置文件中进行相应的配置即可。
Field可以使用大量的选项来描述,这些选项告诉Solr在索引和搜索期间如何处理内容。
现在,查看一下表1中列出的重要属性的子集:
属性名称
描述
Indexed
IndexedField可以进行搜索和排序。
你还可以在indexedField上运行Solr分析过程,此过程可修改内容以改进或更改结果。
Stored
storedField内容保存在索引中。
这对于检索和醒目显示内容很有用,但对于实际搜索则不是必需的。
例如,很多应用程序存储指向内容位置的指针而不是存储实际的文件内容。
2、solr索引操作
在Solr中,通过向部署在servlet容器中的SolrWeb应用程序发送HTTP请求来启动索引和搜索。
Solr接受请求,确定要使用的适当SolrRequestHandler,然后处理请求。
通过HTTP以同样的方式返回响应。
默认配置返回Solr的标准XML响应。
你也可以配置Solr的备用响应格式,如json、csv格式的文本。
索引就是接受输入元数据(数据格式在schema.xml中进行配置)并将它们传递给Solr,从而在HTTPPostXML消息中进行索引的过程。
你可以向Solr索引servlet传递四个不同的索引请求:
add/update允许您向Solr添加文档或更新文档。
直到提交后才能搜索到这些添加和更新。
commit告诉Solr,应该使上次提交以来所做的所有更改都可以搜索到。
optimize重构Lucene的文件以改进搜索性能。
索引完成后执行一下优化通常比较好。
如果更新比较频繁,则应该在使用率较低的时候安排优化。
一个索引无需优化也可以正常地运行。
优化是一个耗时较多的过程。
delete可以通过id或查询来指定。
按id删除将删除具有指定id的文档;按查询删除将删除查询返回的所有文档。
Lucene中操作索引也有这几个步骤,但是没有更新。
Lucene更新是先删除,然后添加索引。
因为更新索引在一定情况下,效率没有先删除后添加的效率好。
3、搜索
添加文档后,就可以搜索这些文档了。
Solr接受HTTPGET和HTTPPOST查询消息。
收到的查询由相应的SolrRequestHandler进行处理。
solr查询参数描述:
参数
描述
示例
q
Solr中用来搜索的查询。
有关该语法的完整描述,请参阅 参考资料。
可以通过追加一个分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。
默认的排序是scoredesc,指按记分降序排序。
q=myField:
JavaANDotherField:
developerWorks;dateasc此查询搜索指定的两个字段,并根据一个日期字段对结果进行排序。
start
将初始偏移量指定到结果集中。
可用于对结果进行分页。
默认值为0。
start=15 返回从第15个结果开始的结果。
rows
返回文档的最大数目。
默认值为10。
rows=25,返回25个结果集
fq
提供一个可选的筛选器查询。
查询结果被限制为仅搜索筛选器查询返回的结果。
筛选过的查询由Solr进行缓存。
它们对提高复杂查询的速度非常有用。
任何可以用q参数传递的有效查询,排序信息除外。
hl
当hl=true时,在查询响应中醒目显示片段。
默认为false。
参看醒目显示参数(见 参考资料)。
hl=true
fl
作为逗号分隔的列表指定文档结果中应返回的Field集。
默认为“*”,指所有的字段。
“score”指还应返回记分。
*,score
sort
排序,对查询结果进行排序,参考
sort=dateasc,pricedesc
4、solr模式
上面有提到schema.xml这个配置,这个配置可以在你下载solr包的安装解压目录的apache-solr-3.4.0\example\solr\conf中找到,它就是solr模式关联的文件。
打开这个配置文件,你会发现有详细的注释。
模式组织主要分为三个重要配置
types部分是一些常见的可重用定义,定义了Solr(和Lucene)如何处理Field。
也就是添加到索引中的xml文件属性中的类型,如int、text、date等
fileds是你添加到索引文件中出现的属性名称,而声明类型就需要用到上面的types
其他配置有
uniqueKey唯一键,这里配置的是上面出现的fileds,一般是id、url等不重复的。
在更新、删除的时候可以用到。
defaultSearchField默认搜索属性,如q=solr就是默认的搜索那个字段
solrQueryParser查询转换模式,是并且还是或者(and/or)
5、索引配置
Solr性能因素,来了解与各种更改相关的性能权衡。
表1概括了可控制Solr索引处理的各种因素:
因素
描述
useCompoundFile
通过将很多Lucene内部文件整合到单一一个文件来减少使用中的文件的数量。
这可有助于减少Solr使用的文件句柄数目,代价是降低了性能。
除非是应用程序用完了文件句柄,否则false的默认值应该就已经足够。
mergeFactor
决定低水平的Lucene段被合并的频率。
较小的值(最小为2)使用的内存较少但导致的索引时间也更慢。
较大的值可使索引时间变快但会牺牲较多的内存。
maxBufferedDocs
在合并内存中文档和创建新段之前,定义所需索引的最小文档数。
段是用来存储索引信息的Lucene文件。
较大的值可使索引时间变快但会牺牲较多的内存。
maxMergeDocs
控制可由Solr合并的Document的最大数。
较小的值(<10,000)最适合于具有大量更新的应用程序。
maxFieldLength
对于给定的Document,控制可添加到Field的最大条目数,进而截断该文档。
如果文档可能会很大,就需要增加这个数值。
然而,若将这个值设置得过高会导致内存不足错误。
unlockOnStartup
unlockOnStartup告知Solr忽略在多线程环境中用来保护索引的锁定机制。
在某些情况下,索引可能会由于不正确的关机或其他错误而一直处于锁定,这就妨碍了添加和更新。
将其设置为true可以禁用启动锁定,进而允许进行添加和更新。
6、查询处理配置
标记定义了可组合在一起形成一个查询的子句数量的上限。
对于大多数应用程序而言,默认的1024就应该已经足够;然而,如果应用程序大量使用了通配符或范围查询,增加这个限值将能避免当值超出时,抛出TooManyClausesException。
若应用程序预期只会检索Document上少数几个Field,那么可以将属性设置为true。
懒散加载的一个常见场景大都发生在应用程序返回和显示一系列搜索结果的时候,用户常常会单击其中的一个来查看存储在此索引中的原始文档。
初始的显示常常只需要显示很短的一段信息。
若考虑到检索大型Document的代价,除非必需,否则就应该避免加载整个文档。
部分负责定义与在Solr中发生的事件相关的几个选项。
Searcher的Java类来处理Query实例。
要改进这一设计和显著提高性能,把这些新的Searcher联机以便为现场用户提供查询服务之前,先对它们进行“热身”。
部分中的选项定义newSearcher和firstSearcher事件,您可以使用这些事件来指定实例化新搜索程序或第一个搜索程序时应该执行哪些查询。
如果应用程序期望请求某些特定的查询,那么在创建新搜索程序或第一个搜索程序时就应该反注释这些部分并执行适当的查询。
solrconfig.xml文件的剩余部分,除之外,涵盖了与缓存、复制和扩展或定制Solr有关的项目。
admin部分让您可以定制管理界面。
有关配置admin节的更多信息,请参看solrconfig.xml文件中的注释。
7、监视、记录和统计数据
用于监视、记录和统计数据的Solr管理选项
菜单名
URL
描述
Statistics
http:
//localhost:
8080/solr/admin/stats.jsp
Statistics管理页提供了与Solr性能相关的很多有用的统计数据。
这些数据包括:
关于何时加载索引以及索引中有多少文档的信息。
关于用来服务查询的SolrRequestHandler的有用信息。
涵盖索引过程的数据,包括添加、删除、提交等的数量。
缓存实现和hit/miss/eviction信息
Info
http:
//localhost:
8080/solr/admin/registry.jsp
有关正在运行的Solr的版本以及在当前实现中进行查询、更新和缓存所使用的类的详细信息。
此外,还包括文件存于Solrsubversion存储库的何处的信息以及对该文件功能的一个简要描述。
Distribution
http:
//localhost:
8080/solr/admin/distributiondump.jsp
显示与索引发布和复制有关的信息。
更多信息,请参见“发布和复制”一节。
Ping
http:
//localhost:
8080/solr/admin/ping
向服务器发出ping请求,包括在solrconfig.xml文件的admin部分定义的请求。
Logging
http:
//localhost:
8080/solr/admin/logging.jsp
让您可以动态更改当前应用程序的日志记录等级。
更改日志记录等级对于调试在执行过程中可能出现的问题非常有用。
properties
http:
//localhost:
8080/solr/admin/get-properties.jsp
显示当前系统正在使用的所有Java系统属性。
Solr支持通过命令行的系统属性替换。
有关实现此特性的更多信息,请参见solrconfig.xml文件。
Threaddump
http:
//localhost:
8080/solr/admin/threaddump.jsp
threaddump选项显示了在JVM中运行的所有线程的堆栈跟踪信息。
8、智能缓存
智能缓存是让Solr得以成为引人瞩目的搜索服务器的一个关键性能特征。
Solr提供了四种不同的缓存类型,所有四种类型都可在solrconfig.xml的部分中配置。
solrconfig.xml文件中所用的标记名列出了这些缓存类型:
缓存标记名
描述
能否自热
filterCache
通过存储一个匹配给定查询的文档id的无序集,过滤器让Solr能够有效