Lucene&Solr学习笔记之三Solr搭建及使用
3. Solr搭建及使用
3.1 Solr下载
官网:
htpp://lucene.apache.org
,就是我们刚刚创建的solrhome
文件夹
找到solrhome文件夹在里面会发现只有coreTest文件夹是一个空的,core并未成功创建,因为我们缺少solrconfig.xml,将之前复制到solrhome中的solorhome\configsets\_default
文件夹 下的conf
文件夹复制到
coreTest
文件夹下,再次回到首页点击Add Core
核就创建成功了。
点击Core Selector
可以选择创建的Core查看具体信息
点击schema
可以添加域:
涉及到的域的类型就域Lucene一致了,这里不再赘述。
界面中的一些菜单介绍:
-
Dashboard:
仪表盘,显示了该Solr实例开始启动运行的时间、版本、系统资源、ivm等信息。 -
Logging Solr
运行日志信息。
-
Cloud
Cloud 即 Solrdoud,即Sor云(集群),当使用Solr Cloud模式运行时会显示此菜单,如下图是Solr Cloud的管理界面: -
Core Admin
Solr Core的管理界面。Solr Core是Solr的一个独立运行实例单位,它可以对外提供索引和搜索服务,一个Solr工程可以运行多个Solrcore(Solr实例),一个Core 对应一个索引目录。
添加solrcore:
第一步:复制 collection1改名为collection2第二步:修改core.properties。name=collection2第三步:重启tomcat -
java properties
Solr在JVM运行环境中的属性信息,包括类路径、文件编码、ivm内存设置等信息。 -
Tread Dump
显示SolrServer中当前活跃线程信息,同时也可以跟踪线程运行栈信息。 -
Analysis
通过Analysis的界面可以测试索引分析器和搜索分析器的执行情况。 -
Dataimport
可以定义数据导入处理器,从关系数据库将数据导入到Solr索引库中。 -
Document.
通过此菜单可以创建索引、更新索引、删除索引等操作。
3.4 配置IK中文分词器
3.4.1 Managed-schema介绍
Managed-schema,在Solr创建的Core的conf目录下如:solorhome\collection1\conf
,它是Solr数据表配置文件,它定义了加入索引的数据的数据类型的。主要包括Fieldlypes、Fields和其他的一些缺省设置。
3.4.2 安装IK中文分词器
第一步:把IK-Analyzer-7.2.1.jar
添加到apache-tomcat-8.5.38\webapps\solrsolr\WEB-INF\ib
目录下。
第二步:复制IKAnalyzer的配置文件和自定义词典和停用词词典到apache-tomcat-8.5.38\webapps\solr\WEB-INF\classes
下。
第三步:配置Core的managed-schema文件solorhome\collection1\conf
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name="content_ik" type="text_ik" indexed="true" stored="false"/>
保存,重启tomcat
就可以使用IK分词器
了
在solr
管理页面选择核然后选择analysis
就可以查看分词效果了
3.5 批量导入数据
使用dataimport插件批量导入数据。
第一步:把dataimport 插件依赖的jar包添加到solrcore中路径:collection1\lib
(collection1时核名称,没有lib文件夹需要创建一个)中。
还需要连接mysql数据库所以导入mysql的驱动包mysql-connector-java-5.1.46-bin.jar
第二步:配置核的核心配置文件solrconfig.xml
(目录:solorhome\collection1\conf
),在其中添加一个requestHandler
<!-- 配置导入数据的requestHandler -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
配置中涉及到data-config.xml
配置文件用于存放数据库连接信息,在solrconfig.xml
同级目录下创建一个data-config.xml
然后配置上:
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/lucene"
user="root"
password="123456"/>
<document>
<entity name="product" query="SELECT pid, name, catalog, price, picture, shop_name, market_time FROM product">
<field column="pid" name="id"/>
<field column="name" name="product_name"/>
<field column="catalog" name="product_catalog"/>
<field column="price" name="product_price"/>
<field column="picture" name="product_picture"/>
<field column="shop_name" name="product_shop_name"/>
<field column="market_time" name="product_market_time"/>
</entity>
</document>
</dataConfig>
导入lucene.sql
即可建表。
由于将数据库字段映射为solr
域而solr中没有定义这些域,所以就需要手动配置。
下面就来说明关于设置业务系统Field。
3.5.1 设置业务系统Field
如果不使用Solr提供的Field 可以针对具体的业务需要自定义一套Field,如下是商品信息Field:
<-- product,在solr7中float,double之类的都是系统自带pfloat,pdouble -->
<field name="product_name" type="text_ik" indexed="true" stored="true"/>
<field name="product_price" type="pfloat" indexed="true" stored="true"/>
<field name="product_picture" type="string" indexed="false" stored="true"/>
<field name="product_catalog" type="text_ik" indexed="true" stored="true"/>
<field name="product_shop_name" type="text_ik" indexed="true" stored="true"/>
<field name="product_keywords" type="text_ik" indexed="true" stored="false"
multiValued="true"/>
<copyField source="product_name" dest="product_keywords"/>
<copyField source="product_catalog" dest="product_keywords"/>
<copyField source="product_shop_name" dest="product_keywords"/>
其中product_keywords
是新增加的一个多值域,而copyField
则是用于拷贝,将product_name
,product_catalog
,product_shop_name
拷贝到product_keywords
域中,这样在搜索的时候就不需要分别搜索那三个域,而是直接搜索product_keywords
一次就可以返回搜索结果,提高搜索速度。
将上面的配置文件复制到核的managed-schema
配置文件中(solorhome\collection1\conf\managed-schema
):
配置好这些以后,重启服务器会可以打开dataimport
了