Solr 踩过的坑

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" /> 
时间: 2024-11-18 07:38:28

Solr 踩过的坑的相关文章

7个产品经理/交互新人初入职场时踩过的坑

  前车之鉴后事之师,聪明的人可以从别人的错误中学到经验.这次特意邀请了七位迈入职场不久的产品经理.交互设计师同学,分享那些他们踩过的坑.话不多说,收获有多少,就看你有多聪明啦. 当从象牙塔走入职场,新人们除了兴奋和憧憬以外更多的还有紧张和迷茫:对庞大业务的不熟悉.对工作模式和规范的不了解.对同事和前辈的生疏,都是新人成长的必经之路.有些坑,需要我们亲自踩过才能有深刻的体会,但是前车之鉴后事之师,聪明的人一样可以从别人的错误中学到经验. 这次特意邀请了七位迈入职场不久的产品经理.交互设计师同学,

详解Bypass UAC过程中踩过的坑(第一部分)

本文讲的是详解Bypass UAC过程中踩过的坑(第一部分),我目前正在尝试对Chrome沙盒进行一些改进.而作为其中的一部分,我现在正在对我的沙盒攻击Surface 分析工具进行更新,因为我想衡量我对Chrome做的事情是否具有实际的安全性.但事实上当我在进行这一切时,我一直躲不开绕过UAC的麻烦,这就导致进程出现了问题.所以为了顺便演示下我以前在UAC绕过的博文中所讲的,我决定将这一切再来一次.当我完成这一切的时候,我将使用最新版本的NtObjectManager  Powershell模块

这篇必看:那些产品、交互新人初入职场踩过的坑

当从象牙塔走入职场,新人们除了兴奋和憧憬以外更多的还有紧张和迷茫:对庞大业务的不熟悉.对工作模式和规范的不了解.对同事和前辈的生疏,都是新人成长的必经之路.有些坑,需要我们亲自踩过才能有深刻的体会,但是前车之鉴后事之师,聪明的人一样可以从别人的错误中学到经验. 这次特意邀请了七位迈入职场不久的产品经理.交互设计师同学,分享那些他们踩过的坑.话不多说,收获有多少,就看你有多聪明啦. 交互设计师 鸿影 from 阿里巴巴 1. 无脑闷头执行 过程描述:接到需求的时候,对方描述了一个具体的解决方案,就

详解Bypass UAC 过程中踩过的坑(第二部分)

本文讲的是详解Bypass UAC 过程中踩过的坑(第二部分),在第1部分完成后,我们知道普通用户在拆分令牌管理登录中处理可以获得对升级进程的Terminate,QueryLimitedInformation 和  Synchronize进程访问权限的访问.这是由于正常的用户和管理员具有默认DACL,该默认DACL授予对同一桌面上所有令牌设置的当前登录会话的执行访问权限.我们接下来的问题是如何才能提升你的权限? 在我们拥有的3个访问权限中, Terminate 和 Synchronize 都不是

游戏服务器数据库踩过的坑

     在页游服务器这块很早之前一直没有认真考虑过,大部分是之前搭建好的,我只需要按照他原来的设计继续码代码就好了.      可是这次服务器重构的过程中,还是遇到了很多始料不及的问题.那么就按照踩过的坑,去一个个讲讲分析分析.      1:起初mysql的方案    起初的设计方案是这样,用一个RolePlayer 去做玩家数据的缓存,所有玩家的数据更新到RolePlayer中,定时十秒中更新到数据库.RolePlayer大概是这样一个设计       class RolePlayer 

说说云计算时代,运维人员会踩到哪些坑?

近期在ChinaUnix论坛有一场讨论,标题是--云计算时代:运维人员会踩到哪些坑? 整个讨论过程非常活跃,大概有50个答复,运维派这就给大家整理了一些讨论的优质内容分享给大家. 背景: 在云计算领域,运维人员就是这样的存在,小到一条短信,大到一次网上交易,只要和IT相关的业务就需要这些运维人员,没有他们在背后的支持,生活是会出大乱子的. 可是到了云计算时代,不少人说IT人要下岗了,是否真会如此呢?云计算的出现是否会使得整体行业对运维的需求萎缩了呢? 面对传统的几十台服务器时,运维人员还能手动处

Javascript之旅——第八站:说说instanceof踩了一个坑

原文:Javascript之旅--第八站:说说instanceof踩了一个坑 前些天写js遇到了一个instanceof的坑,我们的页面中有一个iframe,我在index页面中计算得到了一个array,然后需要传递到Flight页面 这个嵌套的iframe中的一个函数(SearchFlight)中,作为防御性编程,我需要在SearchFlight函数中进行参数检测,也就是判断过来的参数一 定是Array类型.   一:抛出问题 举个例子,下面有两个页面. Index.html页面 1 <!DO

那些年使用Hive踩过的坑

1.概述 这个标题也是用血的教训换来的,希望对刚进入hive圈的童鞋和正在hive圈爬坑的童鞋有所帮助.打算分以下几个部分去描述: Hive的结构 Hive的基本操作 Hive Select Hive Join Hive UDF Hive的M/R 使用Hive注意点 优化及优化详情 优化总结 调优的经常手段 解决Hive问题的途径 这篇文章只是起个头,为描述其他部分做下准备.下面我赘述下Hive的结构和一些基本的操作. 2.介绍 Hive 是建立在 Hadoop 上的数据仓库基础构架.它提供了一

最近用Timer踩了一个坑,分享一下避免别人继续踩

最近做一个小项目,项目中有一个定时服务,需要向对方定时发送数据,时间间隔是1.5s,然后就想到了用C#的Timer类,我们知道Timer 确实非常好用,因为里面有非常人性化的start和stop功能,在Timer里面还有一个Interval,就是用来设置时间间隔,然后时间间隔到了就会触 发Elapsed事件,我们只需要把callback函数注册到这个事件就可以了,如果Interval到了就会触发Elapsed,貌似一切看起来很顺其自然,但是 有一点一定要注意,callback函数本身执行也是需要