开发者社区 问答 正文

Havenask的bitmap 高频词字典和配置 有参考不 ?

Havenask的bitmap 高频词字典和配置 有参考不 ?

展开
收起
三分钟热度的鱼 2024-04-25 08:27:29 56 分享 版权
阿里云 AI 助理回答

在 Havenask 中,bitmap 高频词字典 和相关配置是优化索引性能的重要手段。以下是详细的说明和配置参考:


1. 高频词字典的作用

高频词字典通过为高频词建立 bitmap 索引,可以有效减少索引空间并提高检索性能。
- 适用场景:适用于文档中出现频率较高的词(如停用词或常见词汇)。 - 优势: - 减少存储空间占用。 - 提升查询效率,特别是在大规模数据集上。


2. 高频词字典的配置方式

Havenask 支持两种类型的高频词字典配置:

(1)静态高频词字典

  • 配置项high_frequency_dictionary
  • 作用:指定一个固定的词表,用于生成 bitmap 索引。
  • 使用场景:当高频词集合明确且固定时,可直接配置静态词表。
  • 示例
    "high_frequency_dictionary": ["高频词1", "高频词2", "高频词3"]
    

(2)自适应高频词字典

  • 配置项adaptive_dictionaries
  • 作用:根据规则动态生成高频词及其对应的 bitmap 索引。
  • 支持的规则类型
    • DOC_FREQUENCY:将文档频率(df)大于等于阈值的词视为高频词。
    {
      "adaptive_dictionary_name": "df",
      "dict_type": "DOC_FREQUENCY",
      "threshold": 1500000
    }
    
    • PERCENT:将文档频率占比(df/totalDocCount * 100)大于等于阈值的词视为高频词。
    {
      "adaptive_dictionary_name": "percent",
      "dict_type": "PERCENT",
      "threshold": 30
    }
    
    • INDEX_SIZE:比较 term 的 bitmap 索引与原始索引大小,当 bitmap 索引较小时,认为该 term 是高频词。
    {
      "adaptive_dictionary_name": "size",
      "dict_type": "INDEX_SIZE"
    }
    

3. 高频词字典的配置建议

  • INDEX_SIZE 规则:适用于 term 可枚举(如固定为 a、b、c 等有限个数)且查询比例较低的字段。
  • PERCENT 或 DOC_FREQUENCY 规则:适用于 term 不可枚举且查询频繁的字段。建议基于性能测试结果选择阈值,经验值为文档总数的 5%。
    • 示例:如果文档总数为 1000 万,则 DOC_FREQUENCY 阈值建议为 50 万,PERCENT 阈值建议为 5。

4. bitmap 索引的类型配置

  • 配置项high_frequency_term_posting_type
  • 选项
    • both:同时保留 bitmap 和倒排索引。
    • bitmap:仅保留 bitmap 索引(默认值)。
  • 建议:如果需要兼顾精确性和性能,可以选择 both

5. 注意事项

  • 字段类型限制NUMBER 类型索引支持对整型字段(如 INT8、UINT8 等)建立倒排索引,但不支持 fieldmapsection信息 等复杂结构。
  • 索引名称限制index_name 不允许命名为 "summary"
  • 多值字段支持:支持对多值整型字段构建索引,每个值会单独建立倒排链。

6. 最佳实践

  • 减小索引大小:建议将 term_payload_flagdoc_payload_flagterm_frequency_flag 设置为 0,以减少不必要的存储开销。
  • 文件压缩:通过 file_compress 配置文件级别的压缩,进一步优化存储效率。

以上内容详细描述了 Havenask 中 bitmap 高频词字典的配置方法及相关建议。希望这些信息能帮助您更好地理解和应用相关功能!

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答