Solr主要用于对其他存储系统中已有的数据进行分析,查询,然后展示结果;利用solr强大的搜索索引功能,找到自己需求的结果。
适用场景:
对于存储在文件中的日志 可以导入到solr中做分析,
对于 关系型数据库里需要做全文搜索的字段 可以导入到slor 中
Solr安装使用(window版):
Solr可以算作是一个独立的java工程,所以整个实例中,需要tomcat和solr的安装包
1.将tomcat和solr解压到同一个目录下。
2.把solr-4.10.3\dist目录下的solr-4.10.3.war部署到tomcat下。把war包改名为solr.war
3.启动tomcat,将war自动解压,关闭tomcat,删除solr.war
4.把\solr-4.10.3\example\lib\ext目录下的所有的jar包添加到tomcat下的webapp中的solr工程中
5.solr的使用需要一个solrhome,solrhome就是solr服务器所有的配置文件存放的目录。可以使用solr-4.10.3\example\solr目录做为solrhome
6.
(1)、collection1目录叫做solrcore,每个SolrCore就是一个独立的索引库。Solrcore之间是完全独立的。
(2)、collection1\conf目录下保存的是每个索引库的配置。两个重要的配置文件schema.xml、solrconfig.xml。
(3)、Solrconfig.xml
a) luceneMatchVersion:使用的Lucene的版本号。
b) Lib。默认的目录是Collection1/lib目录,如果需要添加扩展包,需要手工创建。
c) dataDir:索引库存储的目录。默认是Collection1/data目录。会自动创建。如果想更改索引库的存放目录可以更改此配置。
7.配置solr服务,指定solrhome的位置。告诉solr服务solrhome在什么地方。
需要修改solr工程的web.xml文件。
web.xml中直接搜索env-entry即可,默认是注释的,打开注释,将路径换成自己的solrhome的路径即可
8.启动tomcat
访问:http://localhost:启动tomcat的端口号/solr
9.看到以下页面,即solr服务启动成功!
一个solrhome中可以有多个solr core实例,
当面对一个新的solr core时,如果想使用后台管理界面来维护索引库,导入几个常用的包以及进行数据源的配置。
否则,无法使用网页版面对索引库进行批量导入索引操作。即会出现出下图所示错误:
那么如何解决这个问题呢?
首先需要配置dataimport插件:
第一步:把dataimport插件使用的jar包添加到collection2/lib目录下。
所需jar包在
需要这两个jar包,并且,还需要连接数据库,与数据库进行连接的驱动包,mysql或者oracle的驱动包,一同放到collection/lib下。
第二步:需要修改solrconfig.xml,在其中添加一个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 driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/zzlc"
user="root"
password="qwQsd123456"/>
<document>
<entity name="item" query="SELECT * from tb_item ">
<field column="item_id" name="id"/>
<field column="item_title" name="title"/>
<field column="item_sell_point" name="sell_point"/>
<field column="item_price" name="price"/>
<field column="item_image" name="image"/>
<field column="item_category_name" name="category_name"/>
</entity>
</document>
</dataConfig>
第四步:在schema.xml中添加对应的field字段进行管理
<!-- IKAnalyzer-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
添加成功后,重启tomcat,即可看到
如果想使用IK分词器,需要将分词,停用词,IK.xml添加到工程中。
下拉框中的item即为连接数据库,将查询出的数据放入索引库中。