Solr 踩过的坑

简介: 1.solrj查询出的SolrDocument转成SolrInputDocument后不能删除字段,无奈只能new一个SolrInputDocument,然后将原来的key-value拷贝到新new的对象上。

1.solrj查询出的SolrDocument转成SolrInputDocument后不能删除字段,无奈只能new一个SolrInputDocument,然后将原来的key-value拷贝到新new的对象上。
2.cloud模式下solrj不能下载zk的配置文件,ZkController.downloadConfigDir总是报No Node for xxx 这样的错。在tomcat启动的时候指定要上传到zk的本地文件夹位置。
3.cloud模式下solrj不能上传配置文件,ZkController.uploadConfigDir不报错,就是不能上传成功,未找到原因和解决办法。
4.*_t字段加一个不分词的copy字段。

<dynamicField name="*_t"  type="text_general"    indexed="true"  stored="true" multiValued="true"/>
<!--声明*_t_facet字段的类型为notanalyze(不分词)-->
<dynamicField name="*_t_facet"  type="notanalyze"    indexed="true"  stored="true" multiValued="true"/>
<!--将*_t字段拷贝到*_t_facet字段上,注意拷贝动作是在*_t字段分词前拷贝的,而且是solr自动完成的,所以*_t_facet是不分词的,而且我们也不应该手动维护*_t_facet字段-->
<copyField source="*_t" dest="*_t_facet"/>
<!--注意-->
<fieldType name="notanalyze" class="solr.StrField" sortMissingLast="true" />

5.加了*_t_facet字段后,以后修改solr文档时*_t_facet以前的值会不断增加(旧值还在),就算把*_t的字段删除,*_t_facet的字段也会继续存在。没办法,每次更新文档的时候只能一把更新整个文档,更新整个文档的时候还得把*_t_facet和_version_字段删除。SolrInputDocument不给删除字段怎么办?看上面第1个坑。
6.一开始没注意,后来才发现如果某个字段是分词的字段,那么facet这个字段的结果就是分词后的结果。一般情况下,要facet的字段需要配置成不分词的。这个容易,给源字段加一个copy字段好了。那动态字段怎么加不分词的copy字段呢?看上面第4个坑。
举个栗子:
假如有两个文档,name_t和email_t是分词的。email_t_facet是不分词的。注意email_t_facet是自动生成的。
这里写图片描述

这里写图片描述

email_t也是分词的。facet是分词后的结果,太散了
这里写图片描述

email_t_facet是不分词的。facet的结果是我们想要的
这里写图片描述

7.schema.xml中文档的id不能配置成分词的,否则会出现文档重复的问题。

<!--id字段默认的type是string,但是我们经常把string和text都配置成了smartcn或者ik什么的,分词器配置在string上时别忘了把id的类型改掉-->
<field name="id" type="notanalyze" indexed="true" stored="true" required="true" multiValued="false" /> 
目录
相关文章
|
12月前
|
JSON 监控 搜索推荐
【技术选型】Elasticsearch 和Solr那个香?
【技术选型】Elasticsearch 和Solr那个香?
|
XML 存储 JSON
Solr环境搭建
Solr环境搭建
146 0
Solr环境搭建
|
XML 存储 JSON
Solr学习总结
Solr学习总结
128 0
Solr学习总结
|
消息中间件 运维 监控
我用kafka两年踩过的一些非比寻常的坑
我用kafka两年踩过的一些非比寻常的坑
我用kafka两年踩过的一些非比寻常的坑
|
存储 SQL 缓存
使用phoenix踩的坑与设计思考
使用phoenix踩的坑与设计思考
356 0
使用phoenix踩的坑与设计思考
|
索引
solr 常见的问题整理 -费元星
本文是我在开发过程中遇到的一些问题的整理,有些摘自网上别人的方法。 1. org.apache.solr.client.solrj.SolrServerException: Timeout occured while waiting response from server at: http://...
1234 0
|
Java 应用服务中间件
Solr的搭建
Solr的搭建
148 0
Solr的搭建
|
自然语言处理 负载均衡 Java
Solr 的使用和搭建
solr全文检索的强大
Solr 的使用和搭建
|
自然语言处理 Docker 容器
Elasticsearch 6.3.2版本踩填坑指南
前言   前端时间利用ES开发一个"附近地理位置+其它信息"查询搜索的功能(据了解,Redis和PostgreSQL也能实现同样的功能),实践中遇到了不少的问题,所以通过这篇文章记录下踩填坑过程。
2208 0