facet查询的时间差异很大

 多米音乐_34063629 发布于 2023-02-09 19:31

我有一个SOLR DB与ca. 70M文件.某些查询返回大约300个文档.同

facet.field = A只用了4毫秒,

facet.field = B需要800毫秒才能返回!

我的架构中有错误吗?可以更快地完成吗?


    
        
        
    
    
        
        
    




cheffe.. 6

A是类型的string,适合用作刻面.你的领域B被分析,你剥离了特殊的字符,你小写它,这不是很好用作一个方面.后来的事情是在应用时完成的StandardFilterFactory.

在Solr的Wiki中,有一个关于方面的有趣部分

由于分面字段通常被指定用于两个目的,即人类可读文本和向下钻取查询值,因此它们通常与用于搜索和排序的字段的索引不同:

它们通常不会被标记为单独的词

它们通常不会映射到小写字母

通常不会删除人类可读的标点符号(双引号除外)

通常不需要存储它们,因为存储的值看起来很像索引值,并且分面机制用于值检索.

你可以看到你错过了中间的两个点,你小写并删除了特殊的字符.

正如在索引字段中使用SOLR和LowerCaseFilterFactory所建议的那样,您应该在模式中引入一个新字段,该字段应该是类型,stringB通过copyField 与您的字段保持同步.这个新领域应该用于分面,它应该更快.我们通常用后缀命名这些字段,比如B_raw.

由于您拥有70米的文档,因此最好先使用子集进行测试以节省您的时间.

1 个回答
  • A是类型的string,适合用作刻面.你的领域B被分析,你剥离了特殊的字符,你小写它,这不是很好用作一个方面.后来的事情是在应用时完成的StandardFilterFactory.

    在Solr的Wiki中,有一个关于方面的有趣部分

    由于分面字段通常被指定用于两个目的,即人类可读文本和向下钻取查询值,因此它们通常与用于搜索和排序的字段的索引不同:

    它们通常不会被标记为单独的词

    它们通常不会映射到小写字母

    通常不会删除人类可读的标点符号(双引号除外)

    通常不需要存储它们,因为存储的值看起来很像索引值,并且分面机制用于值检索.

    你可以看到你错过了中间的两个点,你小写并删除了特殊的字符.

    正如在索引字段中使用SOLR和LowerCaseFilterFactory所建议的那样,您应该在模式中引入一个新字段,该字段应该是类型,stringB通过copyField 与您的字段保持同步.这个新领域应该用于分面,它应该更快.我们通常用后缀命名这些字段,比如B_raw.

    由于您拥有70米的文档,因此最好先使用子集进行测试以节省您的时间.

    2023-02-09 19:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有