Solr安装配置及数据导入以及使用(无图)

1、安装软件
1.1、 下载solr http://archive.apache.org/dist/lucene/solr/7.7.1/
1.2、解压到D盘中
1.3、进入目录/bin 启动 solr start -p 默认端口 8983
1.4、 访问 http://localhost:8983/solr/#/
1.5、创建 solr create -c my_core
1.6、重启 solr restart -p 8983

2、配置ik分词器
中文分词器 IK-Analyzer-Solr7
2.1、 下载jar 在maven的jar仓库中 https://search.maven.org/
输入 com.github.magese,然后下载 ik-analyzer-solr7.jar
复制到 D:\solr-7.7.1\server\solr-webapp\webapp\WEB-INF\lib
2.2、在D:\server\solr-7.7.1\server\solr\lhc_core\conf中的managed-schema
添加如下内容

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

重启solr,可以看到有了新的分词,text_cn

3、配置数据导入
3.1、将以下jar文件

mysql-connector-java-5.1.46.jar
solr-dataimporthandler-7.7.1.jar
solr-dataimporthandler-extras-7.7.1.jar

复制到 D:\solr-7.7.1\server\solr-webapp\webapp\WEB-INF\lib
在D:\solr-7.7.1\server\solr\my_core\conf 文件夹下 solrconfig.xml文件中添加:

  <lib dir="../lib" regex=".*\.jar" />
 < requestHandler name="/dataimport"
     class="org.apache.solr.handler.dataimport.DataImportHandler">
     <lst name="defaults">
       <str name="config">data-config.xml</str>
    </lst>
  </requestHandler> 	

3.2、新增data-config.xml配置文件,有的话就修改

 <?xml version="1.0" encoding="UTF-8" ?> 
  <dataConfig> 
  <dataSource type="JdbcDataSource" 
  driver="com.mysql.jdbc.Driver" 
  url="jdbc:mysql://localhost:3306/test" 
  user="root" 
  password="root"/> 
  <document>
     <entity name="usre" query=" SELECT id,user_name from user ">         
            <field column="id" name="id"/> 
			<field column="user_name" name="user_name"/> 
    </entity>
 </document>
 </dataConfig>

3.3、然后配置 managed-schema 文件中新增

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

访问页面,进行数据导入

4、应用项目
4.1、配置文件中加入:
spring.data.solr.host=http://172.16.0.1:3333/solr/test_core
maven配置文件pom.xml 文件中:

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

4.2、代码中使用:
新增java类:SolrConfig.java,放在config 文件夹中

	@Configuration	
public class SolrConfig {
	@Value("${spring.data.solr.host}")
	private String solrUrl;
	@Bean
	public HttpSolrClient HttpSolrClient() {
		return new HttpSolrClient.Builder(solrUrl).withConnectionTimeout(10000).withSocketTimeout(60000).build();
	}
}

在需要使用的java类中

	@Autowired
	private HttpSolrClient httpSolrClient;

保存或更新

 //创建一个输入元素
SolrInputDocument doc = new SolrInputDocument();
//创建一个SolrQuery对象
SolrQuery query = new SolrQuery();
//设置查询条件
query.setQuery("user_id:"+id);
//执行查询
QueryResponse queryResponse = httpSolrClient.query(query);
//取文档列表,取查询结果总记录数
SolrDocumentList results = queryResponse.getResults();
if (results!=null&&results.size()>0) {
	//如果存在就修改
	doc.setField("id", results.get(0).get("id"));
}
doc.setField("user_id", id);
doc.setField("user_name", user_name);
httpSolrClient.add(doc);
//执行操作
httpSolrClient.commit();

删除:

httpSolrClient.deleteByQuery("user_id:"+id);
//执行操作
httpSolrClient.commit();

查询:

SolrQuery query = new SolrQuery();
	String queryText = "*:*";
	if(StringUtils.isNotBlank(keyword)){
		keyword = ClientUtils.escapeQueryChars(keyword);	//对特殊字符转义
        queryText = "user_name:" + keyword + " || email:" + keyword + ";	//组装检索条件
	}
       query.set("q", queryText);       
       query.addFilterQuery("state:" + state);  
       query.set("sort", "id asc");	 //排序
       //分页
       query.set("start", (pageNumber - 1) * pageSize);
       query.set("rows", pageSize);
       //设置高亮域(设置的域必须在查询条件中存在)
       query.addHighlightField("user_name");
       query.setHighlightFragsize(0);
       query.setHighlightSimplePre("<font color='red'>");	//前缀		这里的话,如果用thymeleaf模板,css样式生效需要加th:utext...
       query.setHighlightSimplePost("</font>");	//后缀
       QueryResponse response = httpSolrClient.query(query);
       //普通查询
       SolrDocumentList results = response.getResults();
       Integer totalCount = Integer.valueOf(String.valueOf(results.getNumFound()));	//检索匹配的总数量
       //高亮查询
       NamedList<SimpleOrderedMap> namedList = (NamedList<SimpleOrderedMap>) response.getResponse().get("highlighting");

5、问题解答:
导入数据时,如果出现fetched:0 时,或者导入失败
原因如下:
1、数据库驱动版本有误,可以更换其他版本试试
2、配置文件中数据库链接相关信息有误
3、没有在managed-schema 里面配置子filed信息
4、没有导入相应的jar文件

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值