solr启动方式有两种:
1.自带Jetty启动
2.tomcat方式启动
5.0之前都是借助于tomcat启动,5.1后都是可以自己是一个服务使用了。solr in action这本书有二种启动方式解释

Jetty vs. Tomcat
We recommend staying with Jetty when first learning Solr. If your organization uses
Tomcat or some other Java web-application server, such as Resin, you can deploy the
Solr WAR file. Because we’re getting to know Solr in this chapter, we’ll refer you to
chapter 12 to learn how to deploy the Solr WAR file.
Solr uses Jetty to make the initial setup and configuration process a no-brainer. But
this doesn’t mean that Jetty is a bad choice for production deployment. If your organization
already has a standard Java web-application platform, then Solr will work
with it. But if you have some choice, then we recommend you try out Jetty. It’s fast,
stable, mature, and easy to administer and customize. In fact, Google uses Jetty
for its App Engine—see Google Chose Jetty for App Engine—which
gives great credibility to Jetty as a solid platform for running Solr in even the most
demanding environments!
一、下载并解压文件夹D:\soft\solr-8.5.2
solr下载地址:https://lucene.apache.org/solr/downloads.html
我下的最新版本Solr 8.5.2
二、 启动及数据导入配置
解压后进入cmd进入bin目录执行 solr start命令,命令行显示如下,启动成功,默认端口8983,也可通过-p指定端口启动
5.2 在master_core2/config目录下配置solrconfig.xml文件
在core目录master_core2/conf下新增配置
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <!-- 配置文件的路径应该也可以使用绝对路径 --> <str name="config">dataConfig.xml</str> </lst> </requestHandler>

5.3 在master_core2/config目录下新建文件dataConfig.xml,内容如下:
<?xml version="1.0" encoding="UTF-8" ?> <dataConfig> <!-- 驱动我使用的是mysql-8.0.20,驱动类就为com.mysql.cj.jdbc.Driver,我数据库密码为空 --> <dataSource name = "ds_1" type="JdbcDataSource" driver="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8" user="root" password=""/> <document> <!--以下的dataSource指定上边的dataSource标签中的name属性,并不是必须要加的,除非你配置了多个数据源, 这里我是一个数据源,所以,下边的dataSource属性是可以去掉的,另外, pk属性指定的是manage-schema文件中的uniqueKey标签中的值,即主键--> <entity name="sys_location_region" dataSource="ds_1" PK="id" query="select id,parent_id,name,level from sys_location_region"> <!--以下的字段column属性对应数据库中字段名称,name是对应solr这边配置的名称,注意id,默认名称即为id, 表示solr这边一条数据的主键,以下四个是要在solr这边中建立索引的字段,比如数据库中有10个字段, 我只需要为4个字段建立索引关系,那这里就写4个就好了 如果数据库中的主键不是id,比如是objectId,那上边的query需要为它起一个别名为id即可--> <field column="id" name="id"/> <field column="parent_id" name="parent_id"/> <field column="name" name="name"/> <field column="level" name="level"/> </entity> </document> </dataConfig>
对应数据库表字段如下:

5.4 在master_core2/config目录下配置managed-schema文件
a. 该文件配置的内容为solr索引中引入字段的类型设置,与dataConfig.xml中配置的field标签内容是对应的。在managed-schema文件中添加如下配置:
<!-- name属性为引入字段在solr中的名称。 type表示类型,solr中会有很多类型,这个在managed-schema中你会看到很多的fieldType标签,都是solr中的类型,具体可以百度看具体的作用。 indexed我理解的表示是建立索引,true为建立,如果为false,则该字段不能作为条件查询出来,如果不小心设置为false,改正后需要重建索引, 特别注意这个。stored true表示在solr中显示,如果这里设置为false,将会在solr中查询不到。multiValued false表示关联查询字段--> <field name="parent_id" type="string" indexed="true" stored="true" multiValued="false"/> <field name="name" type="worddata_ik" indexed="true" stored="true" multiValued="false"/> <field name="level" type="string" indexed="true" stored="true" multiValued="false"/>

b. 在managed-schema文件中,已经默认配置了很多可能配置的字段,包括id,如下边的代码块中的配置,所以这里不需要再配置id的内容,因为id为默认的,已经配置了id的相关配置,只需要再增加以上三个即可。
<!--请注意,能设为uniqueKey的字段,必须要有required="true"的属性--> <uniqueKey>id</uniqueKey>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
这个表示solr中的主键,一般与数据中的主键对应,默认为这个名字。
5.5 solr界面数据导入
选择Dataimport选项,勾选clean、commit、 debug,Entiry选择sys_location_region,点击Execute


5.6 solr查询query

三、solr分词配置
配置ik分词器,下载ik-analyzer-solr7-7.x.jar,传送门 放入\server\solr-webapp\webapp\WEB-INF\lib中。
然后在WEB-INF文件夹下新建一个"classes"文件,从ik-analyzer-solr7-7.x.jar中找到配置文件IKAnalyzer.cfg.xml中复制到classes目录下。
然后配置managed-schema中添加ik分词器的配置,并且把field的类型改为worddata_ik这样搜索的时候才会应用分词。
<fieldType name="worddata_ik" 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>

重启solr,打开管理界面分词分析,可以看到一句话被分成了好几个单词。

查询界面用这句话查询,可以看出查到了重庆市和北京市这两个记录。

查询显示高亮

-
指定端口启动solr: solr start -p 8983
-
指定端口关闭solr: solr stop -p 8983
-
指定端口重启solr: solr restart -p 8983

-
正常启动后访问solr主界面

-
solr core的创建
-
core就是solr的一个实例,一个solr服务下可以有多个core,每个core下都有自己的索引库和与之相应的配置文件。命令行和管理页面都可以创建core 。
-
在命令行输入solr create -c "master_core",如图创建成功。

-
管理界面创建core
-
需要先在D:\soft\solr-8.5.2\server\solr下创建一个空文件夹master_core2
-
需要拷贝默认配置文件夹D:\soft\solr-8.5.2\server\solr\configsets\sample_techproducts_configs\conf到 D:\soft\solr-8.5.2\server\solr\master_core2下
-
core admin界面 >> add core完成


-
-
-
数据全量导入数据库表数据
5.1 导入jar
-
mysql驱动,我使用mysql驱动是mysql-connector-java-8.0.20.jar
-
data-import的jar:在D:\soft\solr-8.5.2\dist下有这两个包solr-dataimporthandler-8.5.2.jar和solr-dataimporthandler-extras-8.5.2.jar。
-
复制这三个jar包到D:\soft\solr-8.5.2\server\solr-webapp\webapp\WEB-INF\lib下
-