美文网首页
solr中域的作用和坑

solr中域的作用和坑

作者: 就这些吗 | 来源:发表于2020-01-25 03:06 被阅读0次

首先要说明的是,在这边我并没有配置item_id,尽管他是实体类的定义,因为在managed-schema文件中有自己默认的配置,当然也可以删掉,这边为了测试并没有这么做。
下图都是文档自带的配置


看下图,这是managed-schema中我自己添加的实体类配置。


image.png

Field:域的定义

Name:域的名称
Type:域的类型,有String、自己设置的分词器text_ik,整数类型等等
Indexed:是否索引,也就是决定是否分词
Stored:是否存储,一般可以用在复制域的dest上
multiValued:是否多值,如果是多值在一个域中可以保持多个值。比如淘宝上一件商品对应的多张图片
这个域可以理解成数据库中的字段啦

里面的坑!!:如果想让查询具体字符串高亮,切记type需要选择text_ik,并且查询的时候,q不能为全匹配,例如(q=keyword),需要让q=keyword,以上仅限用org.apache.solr.client.solrj.SolrQuery来实现高亮的场景。如果使用SolrTemplate来实现,因本人才疏学浅,只会让所查询的整个字段都变为高亮。

dynamicField动态域

dynamicField:动态域与普通的field非常相似,一般用来拓展,比如有普通的field为item_email,动态域的名字为item_*,此时有个item_qq过来,在遍历完field之后发现没有匹配的项,然后到动态域中发现item_*,就存储到这个域中。
其中*与sql语句的模糊查询类似。
一句话概括就是先找Fied再找dynamicField

copyField复制域。

Source:源域
Dest:目标域。
创建文档时,solr会自动把源域的内容复制到目标域。使用复制域可以提供查询的性能。

这个域一般用来给查询提供便利,因为查询的时候需要指定域,我们的field都是一个个定义的,而复制域就可以做到一个域映射多个,通过keywod这个域,去多个field中查找对应的内容,而不用在查询的时候一个个指定了。

里面有个坑!!:复制域的生成时间是导入数据的时候,也就是说如果一开始没有配置复制域,导入数据后才在managed-schema添加的复制域的配置的话,此时复制域为空,需要重新导一遍数据。

相关文章

  • solr中域的作用和坑

    首先要说明的是,在这边我并没有配置item_id,尽管他是实体类的定义,因为在managed-schema文件中有...

  • 彻底搞懂JS作用域和作用域链

    作用域和作用域链 作用域:决定了代码区块中变量和其他资源的可见性; ·全局作用域和函数作用域 作用域是分层的内部可...

  • Python 变量作用域

    变量作用域(scope)在Python中是一个容易掉坑的地方。Python的作用域一共有4中,分别是: L (Lo...

  • ES5中JS的作用域和变量提升(hoisting)

    ES5 中JS 的作用域: 在ES5 中,JS 只有两种形式的作用域:全局作用域和函数作用域。 全局作用域全局对象...

  • 作用域

    Tensorflow中的变量作用域和名称作用域

  • ES6学习-块级作用域、let和const

    一、作用域  在以前的ES5中,作用域只有全局作用域和函数作用域,没有块级作用域。 在函数作用域或全局作用域中通过...

  • 作用域与作用域链

    一、作用域 在 Javascript 中,作用域分为 全局作用域 和 函数作用域全局作用域:代码在程序的任何地方都...

  • JavaScript深入之词法作用域和动态作用域

    转自:JavaScript深入之词法作用域和动态作用域 作用域: 作用域是指程序源代码中定义变量的区域。 作用域规...

  • es6基础知识2

    1. 块作用域 作用域指的是变量的作用范围,js本身具有了全局作用域和函数作用域,es6中新增了块作用域。块作用域...

  • 《javscript启示录》笔记(下)

    7. 作用域和闭包 a. 在javascript中作用域是执行代码的上下文,分为: 全局作用域 和 局部作用域(函...

网友评论

      本文标题:solr中域的作用和坑

      本文链接:https://www.haomeiwen.com/subject/durcthtx.html