Solr 初步理解

Solr 初步理解

打开:

在D:\solr-7.7.2\bin目录下输入(cmd)

 solr start

在浏览器中输入网址localhost:8983/solr

​ 注意:

​ 端口号:8983

​ 窗口不要关闭

创建:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WnaRjjVL-1576041566918)(F:\solr\批注 2019-12-10 090358.png)]

如果出现错误------------->

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dThH0YeH-1576041566919)(F:\solr\批注 2019-12-10 090135.png)]

在文件夹中复制conf到创建的文件(new_core)**

注意路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n2P5Fie0-1576041566920)(F:\solr\批注 2019-12-10 090931.png)]

将mysql-connection-java-5.16.jar放到new-core文件夹下的lib文件中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6sbamcu-1576041566922)(F:\solr\批注 2019-12-10 101422.png)]

在solrconfig.xml中加入配置
<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同级)
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
			driver="com.mysql.jdbc.Driver"
			url="jdbc:mysql://localhost:3306/ssm"
			user="root"
			password="root"/>
	<document>
		<entity name="product" query="SELECT * FROM user">
			<field column="id" name="u_id" />
			<field column="name" name="name" />
			<field column="password" name="password" />
		</entity>
	</document>
</dataConfig>
修改managed-schema文件
<field name="name" type="string" indexed="false" stored="false"/>
<field name="password" type="string" indexed="false" stored="false"/>

导入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JoJ2DXVH-1576041566922)(F:\solr\批注 2019-12-10 101201.png)]

导入时注意要选中clear ,多次刷新不会重复出现

查询

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Y9Nva6rC-1576041566923)(F:\solr\69816f5c1d83d8bcb6f4978179eeff1e.png)]

增量更新

重新导入

  1. 修改数据库

给数据表添加字段updatetime(如果有就不需要),数据类型为(timestamp) 执行语句

alter table `user` modify updateTime timestamp default current_timestamp on update current_timestamp;
  1. 添加jar包

在D:\solr-7.7.2\server\solr-webapp\webapp\WEB-INF\lib目录下添加solr-dataimport-scheduler.jar

  1. 添加配置文件

在文件下创建conf文件夹(注意目录),在文件夹中创建dataimport.properties文件,文件中输入下列内容

#  to sync or not to sync  

#  1 - active; anything else - inactive  

syncEnabled=1

#  which cores to schedule  

#  in a multi-core environment you can decide which cores you want syncronized  

#  leave empty or comment it out if using single-core deployment  

syncCores=new_core(实例名称)

#  solr server name or IP address  

#  [defaults to localhost if empty]  

server=localhost(IP地址)

#  solr server port  

#  [defaults to 80 if empty]  

port=8983(端口号)

#  application name/context  

#  [defaults to current ServletContextListener's context (app) name]  

webapp=solr

#  增量索引的参数   

#  URL params [mandatory]  

#  remainder of URL  

params=/dataimport?command=delta-import&clean=true&commit=true

#  重做增量索引的时间间隔  

#  schedule interval  

#  number of minutes between two runs  

#  [defaults to 30 if empty]  

interval=1

#  重做全量索引的时间间隔,单位分钟,默认7200,即5天;  

#  为空,为0,或者注释掉:表示永不重做索引  

#reBuildIndexInterval=7200

#  重做索引的参数  

reBuildIndexParams=/dataimport?command=full-import&clean=true&commit=true

#  重做索引时间间隔的计时开始时间,第一次真正执行的时间=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;  

#  两种格式:2012-04-11 03:10:00 或者  03:10:00,后一种会自动补全日期部分为服务启动时的日期  

reBuildIndexBeginTime=03:10:00
  1. 配置监听器

在web.xml(D:\solr-7.7.2\server\solr-webapp\webapp\WEB-INF)中加入以下代码:

<listener>  
		<listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class>  
   </listener> 
  1. 修改data-config.xml
deltaQuery="select id from user where updateTime >'${dih.last_index_time}'"
deltaImportQuery="select id,name,pwd from user where id ='${dih.delta.id}'"
  1. 关闭solr,重新打开

    中文分词

放入jar包

将包ik-analyzer-solr7-7.x.jar放入D:\solr-7.7.2\server\solr-webapp\webapp\WEB-INF\lib

(路径下)

在D:\solr-7.7.2\server\solr-webapp\webapp\WEB-INF路径下创建文件夹classes,

将以下三个文件放入classes文件夹中

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KpVzluB3-1576041566925)(F:\solr\批注 2019-12-11 112021.png)]

ext_stopword.dic 分词文件

IKAnalyzer.cfg.xml IK配置文件

mydict.dic 字典文件

配置文件(solr实例中配置)

在managed-schema中配置以下代码

<field name="name" type="text_ik" indexed="true" stored="true"/>

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

注意以下改动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ixnivsYx-1576041566925)(F:\solr\批注 2019-12-11 112923.png)]

Java代码

导入jar包

<dependency>
	<groupId>org.apache.solr</groupId>
	<artifactId>solr-solrj</artifactId>
	<version>7.4.0</version>
</dependency>

相关代码

@Test
public void search() throws IOException, SolrServerException {
	//可以定义为常量(new_core是数据名称)
    String solrUrl = "http://localhost:8983/solr/new_core";
    HttpSolrClient solrClient = new HttpSolrClient.Builder(solrUrl).build();
    SolrQuery query = new SolrQuery();
	
	//key值为命令,value值为对应的值
    query.set("q","*:*");
    query.setSort("id", SolrQuery.ORDER.desc);
    query.setFields("name");

    QueryResponse response = solrClient.query(query);

    SolrDocumentList docs = response.getResults();
    long cnt = docs.getNumFound();
    System.out.println("总条数为"+cnt+"条");
    for (SolrDocument doc : docs) {
        System.out.println("id:"+ doc.get("u_id") + ",name:"+ doc.get("name"));
    }
    solrClient.close();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值