Solr基础教程之solrconfig.xml(三)
前面介绍过schema.xml的一些配置信息,本章介绍solrconfig.xml的配置,以及怎样安装smartcn分词器和IK分词器,并介绍主要的查询语法。
1、 solr配置solrconfig.xml
solrconfig.xml这个配置文件能够在你下载solr包的安装解压文件夹的D:\solr-4.10.4\example\solr\collection1\conf中找到,这个配置文件内容有点多,主要内容有:使用的lib配置,包括依赖的jar和Solr的一些插件;组件信息配置;索引配置和查询配置,以下具体说一下索引配置和查询配置.
2、索引indexConfig
Solr 性能因素,来了解与各种更改相关的性能权衡。
表 1 概括了可控制 Solr 索引处理的各种因素:
属性 | 描写叙述 |
---|---|
useCompoundFile | 通过将非常多 Lucene 内部文件整合到一个文件来降低使用中的文件的数量。这可有助于降低 Solr 使用的文件句柄数目,代价是降低了性能。除非是应用程序用完了文件句柄。否则 false 的默认值应该就已经足够。 |
ramBufferSizeMB maxBufferedDocs | 在加入或删除文档时,为了降低频繁的更些索引,Solr会选缓存在内存中,当内存中的文件大于设置的值,才会更新到索引库。较大的值可使索引时间变快但会牺牲较多的内存。如两个值同一时候设置,满足一个就会进行刷新索引. |
mergeFactor | 决定低水平的 Lucene 段被合并的频率。
较小的值(最小为 2)使用的内存较少但导致的索引时间也更慢。较大的值可使索引时间变快但会牺牲较多的内存。 |
maxIndexingThreads | indexWriter生成索引时使用的最大线程数 |
unlockOnStartup | unlockOnStartup 告知 Solr 忽略在多线程环境中用来保护索引的锁定机制。在某些情况下,索引可能会由于不对的关机或其他错误而一直处于锁定。这就妨碍了加入和更新。
将其设置为 true 能够禁用启动锁定。进而同意进行加入和更新。 |
lockType | single: 在仅仅读索引或是没有其他进程改动索引时使用。native: 使用操作系统本地文件锁,不能使用多个Solr在同一个JVM中共享一个索引。 simple :使用一个文本文件锁定索引。 |
3、 查询配置query
属性 | 描写叙述 |
---|---|
maxBooleanClauses | 最大的BooleanQuery数量. 当值超出时。抛出 TooManyClausesException.注意这个是全局的,假设是多个SolrCore都会使用一个值,每一个Core里设置不一样的化,会使用最后一个的. |
filterCache | filterCache存储了无序的lucene document id集合。1.存储了filter queries(“fq”參数)得到的document id集合结果。2还可用于facet查询3. 3)假设配置了useFilterForSortedQuery,那么假设查询有filter,则使用filterCache。 |
queryResultCache | 缓存搜索结果,一个文档ID列表 |
documentCache | 缓存Lucene的Document对象,不会自热 |
fieldValueCache | 字段缓存使用文档ID进行高速訪问。默认情况下创建fieldValueCache即使这里没有配置。 |
enableLazyFieldLoading | 若应用程序预期仅仅会检索 Document 上少数几个 Field。那么能够将属性设置为 true。延迟载入的一个常见场景大都发生在应用程序返回和显示一系列搜索结果的时候,用户经常会单击当中的一个来查看存储在此索引中的原始文档。
初始的显示经常仅仅须要显示非常短的一段信息。若考虑到检索大型 Document 的代价,除非必需,否则就应该避免载入整个文档。 |
queryResultWindowSize | 一次查询中存储最多的doc的id数目. |
queryResultMaxDocsCached | 查询结果doc的最大缓存数量, 比如要求每页显示10条,这里设置是20条,也就是说缓存里总会给你多出10条的数据.让你点示下一页时非常快拿到数据. |
listener | 选项定义 newSearcher 和 firstSearcher 事件。您能够使用这些事件来指定实例化新搜索程序或第一个搜索程序时应该运行哪些查询。假设应用程序期望请求某些特定的查询,那么在创建新搜索程序或第一个搜索程序时就应该反凝视这些部分并运行适当的查询。 |
useColdSearcher | 是否使用冷搜索,为false时使用自热后的searcher |
maxWarmingSearchers | 最大自热searcher数量 |
4、Solr加入中文分词器
中文分词在solr里面是没有默认开启的,须要我们自己配置一个中文分词器。眼下可用的分词器有smartcn。IK。Jeasy。庖丁。事实上主要是两种,一种是基于中科院ICTCLAS的隐式马尔科夫HMM算法的中文分词器,如smartcn,ictclas4j,长处是分词精确度高,缺点是不能使用用户自己定义词库。还有一种是基于最大匹配的分词器,如IK ,Jeasy。庖丁。长处是能够自己定义词库。添加新词。缺点是分出来的垃圾词较多。
各有优缺点看应用场合自己衡量选择吧。
以下给出两种分词器的安装方法,任选其一即可,推荐第一种。由于smartcn就在solr发行包的contrib/analysis-extras/lucene-libs/下,就是lucene-analyzers-smartcn-4.2.0.jar,首选在solrconfig.xml中加一句引用analysis-extras的配置,这样我们自己加入的分词器才会引到的solr中.
<lib dir="../../../solr-4.10.4/contrib/analysis-extras/lib" regex=".*\.jar" />
<!-- 这里我写的是这个jar包对应当前文件solrconfig.xml的相对路径 -->
假设不想写上面这样的引入,也能够将该jar包放入solr的WEB-INF\lib以下也能达到相同的效果。
4、 smartcn 分词器的安装
首选将发行包的contrib/analysis-extras/lucene-libs/ lucene-analyzers-smartcn-4.2.0.jar拷贝到solr的WEB-INF\lib以下。打开/solr/mycore/conf/scheme.xml,编辑text字段类型例如以下,加入以下代码到scheme.xml中的对应位置。就是找到fieldType定义的那一段,在以下多加入这一段就好啦
<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
</analyzer>
</fieldType>
假设须要检索某个字段,还须要在scheme.xml以下的field中,加入指定的字段。用text_ smartcn作为type的名字。来完毕中文分词。如 text要实现中文检索的话,就要做例如以下的配置:
<field name ="text" type ="text_smartcn" indexed ="true" stored ="false" multiValued ="true"/>
5、 IK 分词器的安装
首选要去下载IKAnalyzer的发行包.下载地址: http://ik-analyzer.googlecode.com/files/IK%20Analyzer%202012FF_hf1.zip.
下载后解压出来文件里IKAnalyzer.cfg.xml、Stopword.dic放到solr的/WEB-INF/classes文件夹下(没有就创建classes文件夹),将IKAnalyzer2012FF_u1.jar放到solr的/WEB-INF/lib以下.
IKAnalyzer2012FF_u1.jar 分词器jar包
IKAnalyzer.cfg.xml 分词器配置文件
Stopword.dic 分词器停词字典,可自己定义加入内容
完毕后就能够像smartcn一样的进行配置scheme.xml了.
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name ="text" type ="text_ik" indexed ="true" stored ="false" multiValued ="true"/>
如今来验证下是否加入成功,首先使用StartSolrJetty来启动solr服务,启动过程中假设配置出错,一般有两个原因:一是配置的分词器jar找不到,也就是你没有复制jar包到\solr\contrib\analysis-extras\lib眼下下;二是分词器版本号不对导致的分词器接口API不一样出的错,要是这个错的话就在检查分词器的相关文档,看一下支持的版本号是否一样.
假设在启动过程中没有报错的话说明配置成功了.我们能够进入到http://localhost:8983/solr地址进行測试一下刚加入的中文分词器.在首页的Core Selector中选择你配置的Croe后点击以下的Analysis,在Analyse Fieldname / FieldType里选择你刚才设置的字段名称或是分词器类型,在Field Value(index)中输入:中国人,点击右面的分词即可了.
6、查询參数
经常使用
q - 查询字符串。必须的。
fl - 指定返回那些字段内容,用逗号或空格分隔多个。
start - 返回第一条记录在完整找到结果中的偏移位置,0開始,一般分页用。
rows - 指定返回结果最多有多少条记录。配合start来实现分页。
sort - 排序,格式:sort=”field name”+”desc|asc”[,”field name”+”desc|asc”]… 。演示样例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。
wt - (writer type)指定输出格式,能够有 xml, json, php, phps, 后面 solr 1.3添加的。要用通知我们,由于默认没有打开。
fq - (filter query)过虑查询,作用:在q查询符合结果中同一时候是fq查询符合的,比如:q=mm&fq=date_time:[20081001 TO 20091031],找keywordmm。而且date_time是20081001到20091031之间的。官方文档:http://wiki.apache.org/solr/CommonQueryParameters
不经常使用
q.op - 覆盖schema.xml的defaultOperator(有空格时用”AND”还是用”OR”操作逻辑),一般默认指定
df - 默认的查询字段,一般默认指定
qt - (query type)指定那个类型来处理查询请求,一般不用指定。默认是standard。
其他
indent - 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个參数。
version - 查询语法的版本号,建议不使用它,由server指定默认值。
[Solr的检索运算符]
“:” 指定字段查指定值,如返回全部值*:*
“?”表示单个随意字符的通配
“*” 表示多个随意字符的通配(不能在检索的项開始使用*或者?符号)
“~”表示模糊检索。如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回类似度在0.8以上的记录。
邻近检索。如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10
“^”控制相关度检索,如检索jakarta apache,同一时候希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值。即jakarta^4 apache
布尔操作符AND、||
布尔操作符OR、&&
布尔操作符NOT、!、-(排除操作符不能单独与项使用构成查询)
“+” 存在操作符,要求符号”+”后的项必须在文档对应的域中存在
( ) 用于构成子查询
[] 包括范围检索。如检索某时间段记录。包括头尾,date:[200707 TO 200710]
{}不包括范围检索,如检索某时间段记录,不包括头尾
date:{200707 TO 200710}
” 转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ?
: “
Solr基础教程之solrconfig.xml(三)的更多相关文章
- OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务
OpenVAS漏洞扫描基础教程之OpenVAS概述及安装及配置OpenVAS服务 1. OpenVAS基础知识 OpenVAS(Open Vulnerability Assessment Sys ...
- Linux入门基础教程之Linux下软件安装
Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...
- RabbitMQ基础教程之Spring&JavaConfig使用篇
RabbitMQ基础教程之Spring使用篇 相关博文,推荐查看: RabbitMq基础教程之安装与测试 RabbitMq基础教程之基本概念 RabbitMQ基础教程之基本使用篇 RabbitMQ基础 ...
- Python基础教程之List对象 转
Python基础教程之List对象 时间:2014-01-19 来源:服务器之家 投稿:root 1.PyListObject对象typedef struct { PyObjec ...
- Python基础教程之udp和tcp协议介绍
Python基础教程之udp和tcp协议介绍 UDP介绍 UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但 ...
- 【Nutch2.2.1基础教程之2.2】集成Nutch/Hbase/Solr构建搜索引擎之二:内容分析
请先参见"集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行",搭建测试环境 http://blog.csdn.net/jediael_lu/article/deta ...
- 【Nutch2.2.1基础教程之2.1】集成Nutch/Hbase/Solr构建搜索引擎之一:安装及运行【单机环境】
1.下载相关软件,并解压 版本号如下: (1)apache-nutch-2.2.1 (2) hbase-0.90.4 (3)solr-4.9.0 并解压至/usr/search 2.Nutch的配置 ...
- testng教程之testng.xml的配置和使用,以及参数传递
昨天学习了一下testng基础教程,http://www.cnblogs.com/tobecrazy/p/4579414.html 昨天主要学习的是testng 的annotation基本用法和生命周 ...
- 【Heritrix基础教程之1】在Eclipse中配置Heritrix
一.新建项目并将Heritrix源代码导入 1.下载heritrix-1.14.4-src.zip和heritrix-1.14.4.zip两个压缩包,并解压,以后分别简称SRC包和ZIP包: 2.在E ...
随机推荐
- 微信小程序组件解读和分析:五、text文本
text文本组件说明: text 文本就是微信小程序中显示出来的文本. text文本组件的示例代码运行效果如下: 下面是WXML代码: [XML] 纯文本查看 复制代码 ? 1 2 3 4 <v ...
- sql server用SQL语句查看字段说明
SELECT t.[name] AS 表名,c.[name] AS 字段名,cast(ep.[value] )) AS [字段说明] FROM sys.tables AS t INNER JOIN s ...
- dubbo之服务降级
向注册中心写入动态配置覆盖规则:(通过由监控中心或治理中心的页面完成) RegistryFactory registryFactory = ExtensionLoader.getExtensionLo ...
- HWND CWND 转换
一.区别HWND是句柄,CWnd是MFC窗体类,CWnd中包含HWND句柄成员对象是m_hWnd.HWND是Windows系统中对所有窗口的一种标识,即窗口句柄.这是一个SDK概念. CWnd是M ...
- 关于ajax跨域解读
首先要了解何为跨域,(协议.域名.端口任意一个不同)的web资源.如何解决跨域:1,jsonp 它只支持GET请求而不支持POST等其它类型的HTTP请求:例如angular 中,如下使用,$http ...
- Anaconda安装xgboost的过程和踩过的坑
win10下安装xgb,安装的过程波折起伏,花了5个小时,给后来人做参考喽 第一次尝试 利用以下两个软件 Git for Windows.MINGW进行安装. 安装可以参考:(https://blog ...
- ZOJ - 3983 - Crusaders Quest(思维 + 暴力)
题意: 给出一个字符串,长度为9,包含三种各三个字母"a","g","o",如果一次消除连续三个一样的分数+1,消完自动向左补齐 其中可以消 ...
- geth搭建以太坊私链及常用操作
一.下载安装geth客户端 https://www.ethereum.org/ 二.搭建私有链 1.准备创世区块配置文件 要运行私有链,我们就需要定义自己的创世区块,创世区块信息写在一个json格式的 ...
- python3.x Day1 菜单程序练习
三级菜单: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 类定义:menu ...
- hash扩展长度攻击及hashdump使用
摘自: 1.http://www.freebuf.com/articles/web/69264.html 2.https://www.cnblogs.com/pcat/p/5478509.html 0 ...