solr

来源:互联网 发布:5s能用4g网络吗 编辑:程序博客网 时间:2024/05/22 14:11
solr部署


1、solr的war包解压后webroot为项目webroot
2、修改过web.xml中的solrhome路径为solr资源路径,修改solrConfig.xml文件内dataDir内
容,如<dataDir>${solr.data.dir:/solr1/collection1/data}</dataDir>
3、第二步完成即可启动solr,控制台会报错,暂时不影响使用。可以修
改solr资源下(D:\solr1\collection1\conf)solrConfig.xml文件内<lib>内容并添加相应文件夹及jar包去除报错


solr创建collection


solr导入数据库
1、通过solrAPI代码导入数据库
2、通过控制台导入数据库:
在solrconfig.xml中加入名为/dataimport的requestHandler(具体代码或百度),根据此requestHandler中的配置创建
数据库连接文件(如本次为data-config.xml,与solrconfig.xml同级),data-config.xml内容注意要指定字段(如本次
为<field column="SYSCODE" name="syscode" />等,注意字段要已经在schema.xml中声明).最后操作控制台dataimport.


solrIK分词器
1.使用
下载ik分词器包(暂时发现有solr3.x和4.x区别,根据solr版本下载),将IKAnalyzer.cfg.xml、stopword.dic复制进src文件夹下,将jar包导入项目.
修改schema.xml配置文件,加入ik的fieldType(如:<fieldType name="text_ik" class="solr.TextField"><analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>   </fieldType> )
最后操作控制台Analysis.
2.智能分词模式
下载的ik分词器不支持智能分词,需修改ik的jar包,然后配置智能分词(useSmart=true)
2.扩展词库
(1).通过代码扩展
(2).通过配置文件扩展:
src下的IKAnalyzer.cfg.xml文件内已有被注释的外部词库配置,将注释去掉后,添加入dic文件名(多个文件用逗号隔开),然后根
据路径及文件名创建相关文件并加入所需词即可.加入后需要重启项目才生效,不符合要求,最好能通过代码扩展.


3.高亮

4.函数查询
函数查询的作用是影响打分,最终得分为查询分乘以函数值,本质是:增加一个查询字段,值为函数计算所得.




5.facet
参数:
facet=true&facet.field=city 开启分面,分面字段为city
facet.mincount=1 最小次数为1
日期分面
facet.date=datefield 日期分面,统计时间段内次数,指定日期字段为datefield(日期字段需注意)
&facet.date.start=NOW/DAY-30DAYS 起始时间为30天前
facet.date.end=NOW/DAY 终止时间为现在
facet.date.gap=+7DAY 指定间隔时间(如结果<int name="2010-11-29T00:00:00Z">2</int>表示11.29-12.05内出现2次);
数值分面(内容与日期分面相似)
facet.range=price
facet.range.start=0
facet.range.end=400
facet.range.gap=100
facet.query=price:[10 TO 80]&facet.query=price:[90 TO 300] 查出price为10-80的次数和90-300的次数

6.suggest

  搜索建议按照官网文档配置即可.(使用时如有问题,有可能是因为solr版本低,而文档是最高版本的文档.)


solr查询语法
查询时如果q中包含字段(如title:xxx),则有很多语法不适用;如果q中不包含字段,而在df中指定字段,则语法都使用(如+-符号,and,or,||等);由此建议使用df

所有查询操作符需用英文符号,AND、OR和NOT必须大写

NOT title:ddd  查询title不包含ddd的记录
NOT title:*  查询title为空或无法识别的记录
title:ddd \r\n AND zrz:aaa 查询title包含ddd并且zrz包含aaa的记录
(aaa AND bbb) OR (ccc AND fff) 用括号构成子查询

+中国 +电力 查询既包含中国又含电力的结果(注意空格)
+中国 -电力 查询包含中国同时不含电力的结果(结果中不含既有中国又有电力);
中国(-电力) 查询包含中国,不包含电力的结果(结果中含有既有中国又有电力,中国部分不会删除,等同于只查中国,不知为何要多此一举,可能主要目的是与下面一条区别)
中国(-电力 *:*) 查询只包含中国或者不包括电力的结果(注意空格)

通配符?和*:“*”表示匹配任意字符;“?”表示匹配出现的位置。
通配符查询速度较慢,尤其是通配符在首位,Solr中默认通配符不能出现在首位(可以修改QueryParser,设置  setAllowLeadingWildcard为true)
~:模糊查询,如:中国地下党~,中国地下党~0.8(实验证明 中国地下党 会查出地下室等结果;而 中国地下党~ 不会查出地下室等结果,结果都是与中国地下党非常相似的记录,不会有垃圾结果)
[XXX TO xxx] 范围查询,支持通配符,支持日期,数字,文本(如:[a TO z])等
solr查询参数
复杂
facet分面
group分组
常用
q.op:设置分词后的关键字是用and组合还是or组合,默认为schema.xml重的defaultOperator配置(or)
df:默认的查询字段
fl:显示的字段
sort:排序,格式:sort=<field name>+<desc|asc>[,<field name>+<desc|asc>]
start:用于分页定义结果起始记录数,默认为0
rows:用于分页定义结果每页返回记录数,默认为10。
fq:filter query。使用Filter Query可以充分利用FilterQuery Cache,提高检索性能。

不常用
debugQuery:设置返回结果是否显示Debug信息。  
explainOther:设置当debugQuery=true时,显示其他的查询说明
wt:指定输出格式,默认为xml
echoHandler:是否显示query handler名称
echoParams是否显示参数.none:不显示;explicit:只显示参数;all显示所有
defType:设置查询解析器名称。
timeAllowed:设置查询超时时间。omitHeader:设置是否忽略查询结果返回头信息,默认为“false”。


注意事项
1.字段中如果有required=true属性,则在插入索引时必须加入此字段(数据库导入时,原schema.xml中自带
的id字段required=true,如果不需要id字段,需修改).

2.修改基础设置(如字段、分词方式等),若与建立索引有关,需重建索引

3.高亮经常需要将字段type设为分词,否则有可能无法高亮此字段



0 0
原创粉丝点击