美文网首页
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中域的作用和坑

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