solr测试项目(下)--索引数据与查询
来源:互联网 发布:站长站源码 编辑:程序博客网 时间:2024/06/05 07:11
接着solr测试项目(中)–整合spring-data-mongo
和solr测试项目(上)–基于maven的springmvc环境搭建
今天开始导入数据和实现查询
Schema API
如果没有定义Fields,那么所有的Fields都是数组类型[]
所以第一步就是根据对象模型创建Fields,这里使用Schema API,而且类型都很简单。
Fields创建好之后,新增的数据
过程
存在的问题
在用schema api创建fields的时候没有为中文分词,导致查询时将所有的中文按照汉字一个一个分开,只要匹配到就查询到任何一个就被查询出来
查询“猫和老鼠”,正确的查询结果应该只有一个,而实际查询除了3个,如果自定字段查询比如name:猫和老鼠,那么只能是完全匹配,像这个name是“猫和老鼠爆笑精华版”的就无法匹配到
解决方案
参考Solr6.1配置中文分词
配置好中文分词,并定义了一个fieldType为text_ik
第一步 创建field
接口地址
http://localhost:8983/solr/wechat/schema
请求方式:POST
请求报文:
{ "add-field" : { "name" : "name", "type" : "text_ik" }, "add-field" : { "name" : "actors", "type" : "text_ik" }, "add-field" : { "name" : "description", "type" : "text_ik" }, "add-field" : { "name" : "directors", "type" : "text_ik" }}
重建索引
现在已name:猫和老鼠就可以查到了,如果没有中文分词,name必须是猫和老鼠爆笑精华版
我们测试一下没有分词的样子
新建一个testcore
使用schema api创建fields,因为如果不创建的话就是数组类型。
接口地址
http://localhost:8983/solr/testcore/schema
请求方式:POST
请求报文:
{ "add-field" : { "name" : "name", "type" : "string" }, "add-field" : { "name" : "actors", "type" : "string" }, "add-field" : { "name" : "description", "type" : "string" }, "add-field" : { "name" : "directors", "type" : "string" }, "add-field" : { "name" : "showtime", "type" : "string" }, "add-field" : { "name" : "imgurl", "type" : "string" }, "add-field" : { "name" : "playcount", "type" : "int" }, "add-field" : { "name" : "userscore", "type" : "int" }, "add-field" : { "name" : "imguistyle", "type" : "int" }}
接下来我们导入数据,倒入数据后看一下具体的一条数据
没有中文分词
SolrQuery query = new SolrQuery();query.setQuery("name:猫和老鼠");QueryResponse rsp = client.query(query);SolrDocumentList docs = rsp.getResults();System.out.println(docs);query.setQuery("name:猫和老鼠爆笑精华版");QueryResponse rsp1 = client.query(query);SolrDocumentList docs1 = rsp1.getResults();System.out.println(docs1);
没有配置分词必须完全匹配
如果配置了分词则都可以查找到
总结
从头到尾测试了一下solr,也总结了一下之前用过的maven,spring,mongo,solr
附Solrj工具类
import org.apache.solr.client.solrj.SolrClient;import org.apache.solr.client.solrj.beans.DocumentObjectBinder;import org.apache.solr.client.solrj.impl.HttpSolrClient;import org.apache.solr.common.SolrInputDocument;public class SolrjTest { private static SolrClient client; private static String url; static { url = "http://localhost:8983/solr/wechat"; client = new HttpSolrClient.Builder(url).build(); } /** * 保存或者更新solr数据 * * @param res */ public static <T> boolean saveSolrResource(T solrEntity) { DocumentObjectBinder binder = new DocumentObjectBinder(); SolrInputDocument doc = binder.toSolrInputDocument(solrEntity); try { client.add(doc); client.commit(); } catch (Exception e) { e.printStackTrace(); return false; } return true; } /** * 删除solr 数据 * * @param id */ public static boolean removeSolrData(String id) { try { client.deleteById(id); client.commit(); } catch (Exception e) { e.printStackTrace(); return false; } return true; }}
0 0
- solr测试项目(下)--索引数据与查询
- ssm项目整合solr索引查询
- 使用Solr索引查询Mysql数据
- 开源大数据索引项目hive-solr
- solr创建查询索引
- Solr之查询索引。
- 数据索引---Solr DIH
- [solr] - 索引数据删除
- [solr] - 索引数据删除
- Solr索引数据删除
- solr 索引数据删除
- solr集成springboot并向solr推送索引数据更新和查询
- 实现Solr索引数据存放到HDFS下
- solr安装部署、solr测试创建core、用solrj 访问solr(索引和搜索)
- Solr高效率索引查询简介
- Apache Solr 概念、安装与导入数据库中表格的数据到索引(适合新手)
- 【Solr】solr删除全部索引数据
- solr删除指定id文档,删除查询到是所有索引数据,删除所有数据
- 条件筛选([尚硅谷]_张晓飞_Mybatis 学习笔记五)
- 一、二级缓存([尚硅谷]_张晓飞_Mybatis 学习笔记六)
- [尚硅谷例题]_pl_sql
- 表达式求值
- jquery跨域办法
- solr测试项目(下)--索引数据与查询
- <pre>标签学习
- TSM是NFC应用发展的关键环节
- Java-面向对象(高级篇)--继承的进一步研究
- 总结eclipse中安装maven插件
- JS 阻止键盘输入event.preventDefault 和window.event.returnValue
- <select>标签学习
- 编译subversion 1.9.4遇到的问题
- js之事件冒泡和事件捕获详细介绍