windows部署步骤和Linux一样
1、安装jdk
1.1 下载安装包
确定架构
$ uname -m
下载地址
https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
解压
$ tar -zxvf jdk-8u331-linux-aarch64.tar.gz -C /usr/local/
1.2 配置环境变量
$ vim /etc/profile
按insert键
在文件末尾添加三个环境变量
export JAVA_HOME=/usr/local/jdk1.8.0_331(改为jdk解压后文件所在目录)
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOME/lib/dt.jar:
JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
按Esc键 然后输入
$ :wq
保存并且退出
退出后输入
$ source /etc/profile
使环境变量生效
1.3 测试jdk是否安装成功
$ java -version
2、下载solr
sol官网下载地址:https://solr.apache.org/downloads.html
或通过命令下载
$ wget https://www.apache.org/dyn/closer.lua/lucene/solr/7.7.3/solr-7.7.3.tgz
解压 到指定目录下
$ tar zxvf solr-7.7.3.tgz -C /usr/local/
3、通过tomcat启动solr
3.1、下载tomcat
下载 可通过命令下载或者直接通过网址手动下载
$ wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.62/bin/apache-tomcat-9.0.62.tar.gz
解压
tar zxvf pache-tomcat-9.0.62.tar.gz -C /usr/local/
3.2、准备依赖包
$ cd /usr/local/solr-7.7.3/server/solr-webapp/
$ cp -r webapp/ /usr/local/apache-tomcat-9.0.62/webapps/solr
$ cp /usr/local/solr-7.7.3/server/lib/ext/* /usr/local/apache-tomcat-9.0.62/webapps/solr/WEB-INF/lib/
$ cp /usr/local/solr-7.7.3/server/lib/metrics-* /usr/local/apache-tomcat-9.0.62/webapps/solr/WEB-INF/lib/
3.3、配置 solrhome
$ cp -r /usr/local/solr-7.7.3/server/solr /usr/local/solr-7.7.3/solrhome
3.4、配置tomcat
$ vim /usr/local/apache-tomcat-9.0.62/webapps/solr/WEB-INF/web.xml
加入如下内容:
<!-- 修改solrhome路径-->
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/solr-7.7.3/solrhome</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
去掉安全验证:
<!-- Get rid of error message -->
<!--
<security-constraint>
<web-resource-collection>
<web-resource-name>Disable TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method>TRACE</http-method>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Enable everything but TRACE</web-resource-name>
<url-pattern>/</url-pattern>
<http-method-omission>TRACE</http-method-omission>
</web-resource-collection>
</security-constraint>
-->
3.5、验证solr部署
启动tomcat进行测试
$ /usr/local/apache-tomcat-9.0.62/bin/startup.sh
访问: http://www.localhost:8080/solr/index.html#/
4、直接启动solr
4.1、安装ik分词器并且添加字段
IKAnalyzer.jar下载地址:https://mvnrepository.com/artifact/com.github.magese/ik-analyzer
引入IKAnalyzer.jar包到solr应用程序的WEB-INF/lib/目录下/server/solr-webapp/webapp/WEB-INF/lib/
添加字段
在solr的安装目录下进入
/server/solr/configsets/_default/conf/managed-schema
<!-- 添加ik分词类型 -->
<fieldType name="ik_word" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- 自定义添加filed -->
<field name="description" type="ik_word" indexed="true" stored="true"/>
4.2、启动solr
在solr安装目录下
$ bin/solr start
进入页面验证是否启动成功
http://www.localhost:8983/solr/index.html#/
4.3、创建core
在solr安装目录下
$ bin/solr create -c “book_core”
4.4、添加数据
直接写数据不需要在外层加[ ].
4.5、Solr查询
Solr查询规则
名称 描述
q 查询字符串,必须的。
fq filter query。使用Filter Query可以充分利用Filter Query Cache,提高检索性能。作用:在q查询符合结果中同时是fq查询符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。
fl field list。指定返回结果字段。以空格“ ”或逗号“,”分隔。
start 用于分页定义结果起始记录数,默认为0。
rows 用于分页定义结果每页返回记录数,默认为10。
sort 排序,格式:sort=+<desc|asc>[,+<desc|asc>]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。
df 默认的查询字段,一般默认指定。
q.op 覆盖schema.xml的defaultOperator(有空格时用"AND"还是用"OR"操作逻辑),一般默认指定。必须大写
wt writer type。指定查询输出结构格式,默认为“xml”。在solrconfig.xml中定义了查询输出格式:xml、json、python、ruby、php、phps、custom。
qt query type,指定查询使用的Query Handler,默认为“standard”。
explainOther 设置当debugQuery=true时,显示其他的查询说明
defType 设置查询解析器名称
timeAllowed 设置查询超时时间
omitHeader 设置是否忽略查询结果返回头信息,默认为“false”
indent 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数
version 查询语法的版本,建议不使用它,由服务器指定默认值
debugQuery 设置返回结果是否显示Debug信息
Solr查询操作
Solr的检索运算符
“:” 指定字段查指定值,如返回所有值*😗
“?” 表示单个任意字符的通配
“” 表示多个任意字符的通配(不能在检索的项开始使用或者?符号)
“~” 表示模糊检索,如检索拼写类似于”roam”的项这样写:roam将找到形如foam和roams的单词;roam0.8,检索返回相似度在0.8以上的记录。
AND、|| 布尔操作符
OR、&& 布尔操作符
NOT、!、-(排除操作符不能单独与项使用构成查询)
“+” 存在操作符,要求符号”+”后的项必须在文档相应的域中存在²
( ) 用于构成子查询
[] 包含范围检索,如检索某时间段记录,包含头尾,date:[201507 TO 201510]
{} 不包含范围检索,如检索某时间段记录,不包含头尾date:{201507 TO 201510}
solr常用命令
查看帮助
bin/solr -help
可以看到solr有哪些子命令,如 start, stop, restart, status, healthcheck, create, create_core, create_collection, delete, version
启动start
bin/solr start -help 查看start帮助
bin/solr start 启动单机版
bin/solr start -f 前台启动
bin/solr start -p 8984 指定端口启动
bin/solr start -cloud 启动分布式版本
bin/solr start -e cloud -noprompt -e表示要启动一个现有的例子,例子名称是cloud,cloud这个例子是以SolrCloud方式启动的
bin/solr restart 重启项目
create
如果是单机版要创建core,如果是分布式的要创建collection
bin/solr create -help 查看create帮助
bin/solr create -c abc
abc是core或collection的名字,取决于solr是单机版还是cloud版本;刷新http://localhost:8983/solr ,可以看到core selector中多了一个abc
abc目录的位置创建在 solr.solr.home(默认是solr的server/solr目录)目录下
post提交数据生成索引
bin/post -c abc docs/
向名为abc的core或collection提交数据,数据源在docs/目录中
删除
bin/solr delete -c abc 删除一个core或collection
删除索引
bin/post -c abc -d “/home/matthewi/software/solr-5.4.1/docs/solr-morphlines-core/allclasses-noframe.html”
重新执行上面的搜索可以看到搜索结果的数量少了一条:numFound列
删除所有数据
bin/post -c abc -d “:”
停止solr
bin/solr stop -all
状态
bin/solr status