Solr4+SolrCloud安装使用手册和详细说明参考官方文档整理Word文档下载推荐.docx
《Solr4+SolrCloud安装使用手册和详细说明参考官方文档整理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Solr4+SolrCloud安装使用手册和详细说明参考官方文档整理Word文档下载推荐.docx(24页珍藏版)》请在冰点文库上搜索。
2181-confdirE:
\tomcatcluster\collection1\conf-confnametestconf
classpath:
参数总是报错找不到solrj.jar,干脆把其加入classpath中;
lib目录中包含solr.war中的lib包所有内容
zkhost:
zookeeper的服务器地址列表;
confdir:
solr的配置文件目录,包含schema,solrconfig等文件;
confname:
起个名,下面有用
单机例子:
java-classpathD:
\java\apache-tomcat-6.0.32\webapps\solr\WEB-INF\lib\*;
\java\apache-tomcat-6.0.32\webapps\solr\WEB-INF\lib\solr-solrj-4.6.1.jarorg.apache.solr.cloud.ZkCLI-cmdupconfig-zkhost127.0.0.1:
2181-confdirD:
\java\apache-tomcat-6.0.32\webapps\solr\solr_home\conf-confnametestconf
\java\apache-tomcat-6.0.32\webapps\solr\WEB-INF\lib\solr-solrj-4.4.0.jarorg.apache.solr.cloud.ZkCLI-cmdupconfig-zkhost127.0.0.1:
7、将上传的配置文件和collection联系起来
\lib\apache-solr-solrj-4.0.0.jarorg.apache.solr.cloud.ZkCLI-cmdlinkconfig-collectioneurope-collection-confnametestconf-zkhost127.0.0.1:
2181
collection:
collection的名字,后面有用,要记住
\java\apache-tomcat-6.0.32\webapps\solr\WEB-INF\lib\solr-solrj-4.6.1.jarorg.apache.solr.cloud.ZkCLI-cmdlinkconfig-collectionmycollection-confnametestconf-zkhost127.0.0.1:
\java\apache-tomcat-6.0.32\webapps\solr\WEB-INF\lib\solr-solrj-4.4.0.jarorg.apache.solr.cloud.ZkCLI-cmdlinkconfig-collectionmycollection-confnametestconf-zkhost127.0.0.1:
8、Solrcloud和zookeeper启动时绑定
1、tomcat\bin下新建一个setenv.bat文件,配置启动项
第一台服务器:
setJAVA_OPTS=-Dbootstrap_confdir=../webapps/solr/solr_home/conf-Dcollection.configName=testconf-Dhost=localhost-Djetty.port=8080-DzkHost=localhost:
2181-DnumShards=2-Xms512m-Xmx1024m
echo%JAVA_OPTS%
后续tomcat服务器:
exportJAVA_OPTS="
-Dhost=107.252.142.195-Dport=28080-Dcollection.configName=collection1-DzkHost=107.252.142.195:
2181"
添加中文分词。
IKAnalyzer2012FF_u1.jar文件拷贝到webapps\solr\WEB-INF\lib下,IKAnalyzer.cfg.xml和stopword.dic拷贝到webapps\solr\WEB-INF\classes下。
Schema.xml中添加如下内容:
fieldname="
subjectname"
type="
string"
indexed="
true"
stored="
/>
nationindustry"
icbcbusiness"
resourcetype"
infosource"
iso3166"
publishTime"
mainText"
text_ika"
objID"
path"
appname"
fieldTypename="
class="
solr.TextField"
>
analyzertype="
index"
org.wltea.analyzer.lucene.IKAnalyzer"
isMaxWordLength="
false"
>
/analyzer>
query"
/fieldType>
SolrCloud使用
SolrCloud的集合(SolrCores)管理API
添加集合
http:
//localhost:
8080/solr/admin/collections?
action=CREATE&
name=mycollection&
numShards=1&
replicationFactor=4
name=collection3&
replicationFactor=3&
maxShardsPerNode=1
参数名说明
Name要创建的集合名称
numShards指定集合Shard的数量
replicationFactor指定每个Shard副本数量
maxShardsPerNode每个Solr服务器节点上最大Shard数量
createNodeSet还不明白什么用
collection.configName配置的名称(必须已存储在ZooKeeper)使用这个新的集合。
如果没有提供创建操作将默认配置名称的集合名称。
删除集合
action=DELETE&
name=mycollection
重新加载
action=RELOAD&
动态添加SolrCore示例
在服务运行时新添加的MyCore分布在3个Shared上面每个两个节点
name=MyCore&
numShards=3&
replicationFactor=2
2.Solr查询
Solr常用查询参数说明
1、常用查询参数说明
q-查询字符串,必须的。
fl-指定返回那些字段内容,用逗号或空格分隔多个。
start-返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。
rows-指定返回结果最多有多少条记录,配合start来实现分页。
sort-排序,格式:
sort=<
fieldname>
+<
desc|asc>
[,<
]…。
示例:
(inStockdesc,priceasc)表示先“inStock”降序,再“price”升序,默认是相关性降序。
wt-(writertype)指定输出格式,可以有xml,json,php,phps,后面solr1.3增加的,要用通知我们,因为默认没有打开。
fq-(filterquery)过虑查询,作用:
在q查询符合结果中同时是fq查询符合的,例如:
q=mm&
fq=date_time:
[20081001TO20091031],找关键字mm,并且date_time是20081001到20091031之间的。
官方文档:
//wiki.apache.org/solr/CommonQueryParameters
不常用
q.op-覆盖schema.xml的defaultOperator(有空格时用"
AND"
还是用"
OR"
操作逻辑),一般默认指定
“OR”
df-默认的查询字段,一般默认指定
qt-(querytype)指定那个类型来处理查询请求,一般不用指定,默认是standard。
其它
indent-返回的结果是否缩进,默认关闭,用indent=true|on开启,一般调试json,php,phps,ruby输出才有必要用这个参数。
version-查询语法的版本,建议不使用它,由服务器指定默认值。
solrconfig.xml的配置实例
查询配置(以上参数项都可以配置到该配置文件)
requestHandlername="
/select"
solr.SearchHandler"
lstname="
defaults"
strname="
echoParams"
explicit<
/str>
intname="
rows"
10<
/int>
defType"
edismax<
//使用的是solr扩展的查询解析器
q.alt"
*:
*<
fq"
sell_price:
[1TO*]<
hl"
true<
hl.fl"
room_name<
bf"
sum(product(termfreq(room_status,"
dzz"
),1.2),1)<
//额外的评分字段,这个是可以影响score的打分的
pf"
//要查询的字段
room_namehouse_coderoom_codezr_house_codehire_commissioner_namebroker_namerating_addressresblock_namedistrict_namesubway_station_namesubway_line_name
qf"
//各自段分配的权重
room_name^5house_coderoom_codezr_house_code
hire_commissioner_namebroker_namerating_addressresblock_name^2district_namesubway_station_namesubway_line_name
/lst>
/requestHandler>
另外schema.xml的defaultOperator参数是个很重要的参数,默认是“OR”,意思是要查询的关键词做完分词后的词做“OR”连接,然后再做查询,而“AND”呢,要至少全包含要搜索的关键词才行。
2、Solr的检索运算符
“:
”指定字段查指定值,如返回所有值*:
*²
“?
”²
表示单个任意字符的通配
“*”表示多个任意字符的通配(不能在检索的项开始使用*或者?
符号)²
“~”²
表示模糊检索,如检索拼写类似于”roam”的项这样写:
roam~将找到形如foam和roams的单词;
roam~0.8,检索返回相似度在0.8以上的记录。
²
邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakartaapache”~10
“^”²
控制相关度检索,如检索jakartaapache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4apache
布尔操作符AND、||²
布尔操作符OR、²
&
布尔操作符NOT、!
、-²
(排除操作符不能单独与项使用构成查询)
“+”存在操作符,要求符号”+”后的项必须在文档相应的域中存在²
()用于构成子查询²
[]包含范围检索,如检索某时间段记录,包含头尾,date:
[200707TO200710]
{}²
不包含范围检索,如检索某时间段记录,不包含头尾
date:
{200707TO200710}
"
转义操作符,特殊字符包括+-²
&
||!
(){}[]^”~*?
:
非空数据的查询比如:
fq=fcode:
['
'
TO*]查询fcode非空的数据
取反实例:
fq=!
fstate:
1
3、facet查询
分类统计facet
q=*:
*&
facet=true&
facet.field=cat&
facet.field=inStock
//按cat
inStock进行分类统计
q=ipod&
facet.query=price:
[0TO100]&
[100TO*]
//区间统计价格在0-100和100-无穷大的
--solr的分组查询(facet)
//IP:
port/solr/room/select?
rows=0&
q=bizcircle_code:
XXXXXX&
facet=on
facet.field=resblock_id&
facet.field=resblock_name&
facet.limit=3
//同一个bizcircle_code下的前三个resblock各自的文档数量
facet使用的参考例子
查询例子
1、bf,tf,idf使用
8080/solr/collection2/select?
indent=on&
defType=edismax&
bf=recip(rord(publishTime),1,1000,1000)^1.2&
sort=score%20desc&
fl=title,norm(text),tf(title,%22%E9%93%B6%E8%A1%8C%22),tf(text,%27%E9%93%B6%E8%A1%8C%27),idf(text,%27%E9%93%B6%E8%A1%8C%27),publishTime,mainText,daily,score&
hl=true&
hl.fl=title,mainText&
facet.field=weekly&
facet.mincount=1&
wt=xml&
q=%E9%93%B6%E8%A1%8C
2、查询
8080/solr/ebusiness_shard1_replica1/select?
q=title:
%E6%89%8B%E6%9C%BA^10&
fl=*,score&
hl.fl=title&
indent=true&
sort=score%20desc,good%20desc,averageScore%20desc
%E6%89%8B%E6%9C%BA&
bq=good:
1&
bq=popularity:
1、查询结果
%E4%BF%A1%E6%81%AF%20and%20(title:
%E5%B7%A5%E5%95%86%20or%20title:
%E9%93%B6%E8%A1%8C)&
facet.field=yearly&
facet.field=monthly&
facet.field=daily&
wt=xml
查询一个shard
8080/solr/collection2_shard1_replica1/select?
q=%E4%BF%A1%E6%81%AF%E9%93%B6%E8%A1%8C&
wt=json
查询指定的Shards
8080/solr/collection3/select?
shards=localhost:
8080/solr/collection1_shard1_replica2,localhost:
8080/solr/collection1_shard1_replica3
查询整个collecti