solr全文检索

一、solr安装

从solr官网下载并解压:http://archive.apache.org/dist/lucene/solr/

二、solr命令

进入solr->bin

启动:solr start [-p 8983]

        访问 http://localhost:8983/solr

停止:solr stop -all

重启:solr restart -p 8983

创建core: solr create -c test_core

三、连接mysql数据库

1、需要将相应的数据库驱动的jar包导入到server\solr-webapp\webapp\WEB-INF\lib下

2、在server\solr下找到自己的核心源的文件夹,打开conf文件夹,我们需要配置solrconfig.xml,managed-schema以及增加一个数据库配置文件。

配置solrconfig.xml

(1)数据库solr的jar包引入,找到对应配置位置加入如下配置

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

(2)增加数据库配置xml文件,找到/select的requestHandler,在上面加入,其中config里面为之后增加的数据库配置文件名字(db-data-config.xml)

<requestHandler name="/dataimport" class="solr.DataImportHandler">
    <lst name="defaults">
      <str name="config">db-data-config.xml</str>
    </lst>
  </requestHandler>

3. 在conf文件夹下,新增配置数据库的xml文件,dataSource中配置数据库数据,type为类型,driver为对应数据库的驱动类,url为数据库地址,user为数据库账户,password为数据库密码。entity为需要的查询数据库语句,图中为查询表 v-solr里面的数据,下面的field为查出的数据需要向solr中存储的字段已经对应存入到solr中的字段名称。

 

 

<dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" 
				url="jdbc:mysql://127.0.0.1:3306/orders?charactorEncoding=utf-8" 
				user="root" 
				password="123456" />
    <document>
        <!--<entity name="share" query="select * from product" 
							deltaImportQuery="select * from product where CREATE_TIME > '${dataimporter.last_index_time}'"
							deltaQuery="select * from product where CREATE_TIME > '${dataimporter.last_index_time}'" 
							pk="ID" >
            <field column="ID" name="id" />
			<field column="PRODUCT_NAME" name="productName" />
			<field column="PRODUCT_DESC" name="productDesc" />
			<field column="CREATE_TIME" name="createTime" />
			<field column="UPDATE_TIME" name="updateTime" />
        </entity>-->
		<entity name="v_solr" query="select * from v_solr" 
			deltaImportQuery="select * from v_solr"
			deltaQuery="select * from v_solr"
		pk="id">
			<field column="id" name="id"/>
			<field column="title" name="searchTitle"/>
			<field column="content" name="searchContent"/>
		</entity>
		
    </document>
</dataConfig>

4.配置managed-schema。这个文件是对应第三步里面的xml来配置的。里面增加第三步查询里面的字段的对应解析配置

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
   <field name="searchTitle" type="text_ik" indexed="true" stored="true" />
   <field name="searchContent" type="text_ik" indexed="true" stored="true" />
   <!-- 索引复制,联合索引 -->
   <field name="keyword" type="text_ik" indexed="true" stored="true" omitNorms="true" multiValued="true"/>
   <copyField source="id" dest="keyword" maxChars="30000"/>
   <copyField source="searchTitle" dest="keyword" maxChars="30000"/>
   <copyField source="searchContent" dest="keyword" maxChars="30000"/>

5.文件配置成功后,在控制台点击如图所示按钮,导入数据

6.查询数据是否导入,如图所示,导入成功

四、文件搜索

1、在server\solr下找到自己的核心源的文件夹,打开conf文件夹,我们需要配置solrconfig.xml,managed-schema以及增加一个数据库配置文件。参考连接mysql数据库

2、配置tika-data-config.xml

<dataConfig>
  <dataSource type="BinFileDataSource"/>
  <document>
    <entity name="file" processor="FileListEntityProcessor" dataSource="null"
            baseDir="${solr.install.dir}/files/file_repos" fileName=".*\.(DOC)|(PDF)|(pdf)|(doc)|(docx)|(ppt)|(txt)|(log)|(xls)|(xlsx)|(csv)|(json)"
            rootEntity="false" onError="skip" recursive="true">

      
		<field column="fileAbsolutePath" name="id" />
		<field column="fileSize" name="size" />
		<field column="fileLastModified" name="lastModified" />
		<entity name="tika-test" dataSource="bin" processor="TikaEntityProcessor"
				url="${file.fileAbsolutePath}" format="text" onError="skip">                
			<field column="Author" name="author" meta="true"/>
			<field column="title" name="title" meta="true"/>
			<field column="dc:format" name="format" meta="true"/>
			<field column="text" name="content"/> 				           
		</entity>
	  
    </entity>
  </document>
</dataConfig>

3、配置managed-schema

五、IK Analyzer(中文分词器)

1、分词器下载地址https://github.com/EugenePig/ik-analyzer-solr5

2、把ik-analyzer-solr5-5.x.jar拷贝到Solr中的应用服务下:

3、配置managed-schema

在managed-schema里,添加

<fieldType name="text_ik" class="solr.TextField">   
  <analyzer type="index">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" />
  </analyzer>
  <analyzer type="query">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" />
  </analyzer>
</fieldType>

或者

<fieldType name="text_ik" class="solr.TextField">   
  <analyzer type="index" useSmart="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>   
  <analyzer type="query" useSmart="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>   
</fieldType>

把需要分词的字段,设置为text_ik

 

六、springboot+solr

1、在pom.xml 添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>

2、application.properties

# solr
spring.data.solr.host=http://localhost:8983/solr/

application.yml

spring:
  data:
    solr:
      host: http://127.0.0.1:8080/solr

具体项目地址参考:https://gitee.com/1255480095/springboot-solr

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值