当前位置: Coin163 >>

solr查询语法、IK、集群Replication配置说明

2013-11-12 | 所属分类:solr IK 集群 复制 搜狗
 

一、  solr查询参数及语法

solr 常用查询参数如下:

·          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] ,找关键字 mm ,并且 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 - 查询语法的版本,建议不使用它,由服务器指定默认值。

 

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使用IK-analyzer及搜狗词库

1、从http://pinyin.sogou.com/dict/下载细胞词库

2、用深蓝词库转换工具(下载地址: https://imewlconverter.googlecode.com/files/imewlconverter_2_0.zip )提取出txt文本

3、用ultraEdit将txt文本另存为无bom utf-8格式并且dos换行

4、在solr的WEB-INF下创建classes目录

5、将utf-8格式的txt词库拷贝到solr的WEB-INF/classes目录

6、在WEB-INF/classes创建IKAnalyzer.cfg.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  

<properties>  

<comment>IK Analyzer 扩展配置</comment>

<!--用户可以在这里配置自己的扩展字典

<entry key="ext_dict">ext.dic;</entry>

-->

<entry key="ext_dict">/mydict.dic;</entry>

<!--用户可以在这里配置自己的扩展停止词字典-->

<entry key="ext_stopwords">stopword.dic;</entry>

</properties>

三、 solr 4.4 master slave主从模式配置(复制)

  可以使用两个Tomcat,配置不同的端口,如主服务器master为localhost:8080 ,从服务器slave 为localhost:9080

solr安装部署省略,master和slave replication配置如下:

1、主服务器master修改的solrconfig.xml文件,
找到<requestHandler name="/replication" class="solr.ReplicationHandler" >
把下面配置的注释去掉,打开如下内容:
<lst name="master">
  <str name="replicateAfter">commit</str>
  <str name="replicateAfter">startup</str>
  <str name="confFiles">schema.xml,stopwords.txt</str>
</lst>     

2、从服务器slave修改的solrconfig.xml文件,
找到<requestHandler name="/replication" class="solr.ReplicationHandler" >
把下面配置的注释去掉,修改如下内容:      
<lst name="slave">
  <str name="masterUrl">http://localhost:8080/solr</str>
  <str name="pollInterval">00:00:60</str>
</lst>
  solr 4.4 配置复制完成,保存重启即可。

 

四、 Solr集群Replication配置说明

Master 配置:
  <requestHandler name="/replication" class="solr.ReplicationHandler" >
       <lst name="master">
         <str name="replicateAfter">commit</str>
         <str name="replicateAfter">startup</str>
         <str name="confFiles">schema.xml,stopwords.txt</str>
       </lst>
Master 配置说明:
name为/Replication的requestHandler,即为Solr提供的复制请求处理接口,
replicateAfter表示在startup和commit之后才允许Slave的复制请求。
 
Solr支持索引数据Replication,同时也支持配置数据的复制。如果需要复制配置数据做好配置备份,可以在Master的solrconfig.xml中配置如下内容:
<str name="confFiles">schema.xml,stopwords.txt,solrconfig.xml,synonyms.txt</str>
  
slave配置:

  <requestHandler name="/replication" class="solr.ReplicationHandler" >
       <lst name="slave">
         <str name="masterUrl">http://localhost:8080/solr/core0</str>
         <str name="pollInterval">00:00:60</str>
       </lst>
slave配置说明:
masterUrl和pollInterval是必选的,masterUrl指定为core0的复制请求接口,pollInterval(单位为秒)是指Slave周期地向Master询问是否数据有所更新,如果发生变更则进行复制。
Slave在Master更新索引之后,通过发送请求获取复制文件列表,然后执行复制过程,最后Slave索引数据发生变化,为保证实时能够搜索到最新内容,重新打开了一个IndexSearcher实例。Slave的索引数据与Master保持同步时,不需要复制。

 

 

 

 

关于Coin163网站地图

Copyright 2012-2013 Coin163.com ( Coin163 ) All Rights Reserved