【技术解析 | 实践】Havenask分析器

本文涉及的产品
推荐全链路深度定制开发平台,高级版 1个月
简介: 本次分享内容为Havenask的分析器,本次课程主要分为3部分内容(分析器介绍、解释分析器主要配置、实战演示),希望本次通过分享帮助大家更好了解和使用Havenask。

一、分析器介绍

  • Havenask作为一个搜索引擎,在构建索引时会将数据整理为倒排索引格式,从而支持后续的高效查询。具体来说,输入的文档会被分词器tokenizer分解为片段进行存储。分析器analyzer则是Havenask在分词器基础上定义的概念,目的是将不同类型的分词器以统一的描述方式暴露给引擎使用。
  • 分析器=分词器插件+初始化参数的配置。
  • 在建表时,可以为字段指定使用的分析器类型从而实现对分子过程的控制。



二、解释分析器主要配置

分析器配置文件最重要的字段是analyzers tokenizer_config

  • analayers 是建表时被引用的分析器,支持配置停用词与归一化选项,需要注意的是,对于自带的分析器类型,需要通过 tokenizer_type 指定,而对于非内置的分析器。
  • 如这里展示的 jieba 分词器,需要先在tokenizer_config.modules中定义动态库的位置,然后在tokenizer_config.tokenizers中传入分词器初始化所需的参数,最后在analyer中通过tokenizer_name引用,其中parameter参数的填写完全取决于分词器具体的实现,最终会以字典的形式传递给分词器代码作初始化。
  • 最后,建表时,通过analyzer指定字段使用的分析器类型即可。


建表配置:

"columns": [
        {
            "name": "title",
            "type": "TEXT",
            "analyzer": "jieba_analyzer"
        },
                 // 省略
]


分析器配置:

{
    "analyzers":
    {
        "jieba_analyzer":
        {
            "tokenizer_name" : "jieba_analyzer",
            "stopwords" : [""],
            "normalize_options" :
            {
                "case_sensitive" : false,
                "traditional_sensitive" : true,
                "width_sensitive" : false
            }
        }
        // 省略其他
    },
    "tokenizer_config" : { 
        "modules" : [{
                "module_name": "analyzer_plugin",
                "module_path": "libjieba_analyzer.so",
                "parameters": { }
        }],
        "tokenizers" : [{
                "tokenizer_name": "jieba_analyzer",
                "tokenizer_type": "jieba",
                "module_name": "analyzer_plugin",
                “parameters”: { 省略 }
        }]
}


三、实战演示

  • 首先,根据文档中的指引完成了集群的初始化,并且创建了一张直写表in0。我们主要关心titlesubject两个支持倒排索引的字段。为与后续使用 jieba 分析器得到的结果进行对比,这里先插入一条语句,观察查询结果。
  • 从查询结果可以看出,默认的分词器仅基于空格进行了分词,同时使用“临江仙”作为关键字无法检索到插入的数据的。接下来,修改表的schema,将两个text字段修改。使用 jieba分析器后创建新表in1,直接使用Havenask默认的分析器配置文件,其中已经包含了jieba分词器相关的配置,原理不再赘述。我们使用的新 schema对这两个字段进行修改,表格建立完成。
  • 现在插入数据,可以发现输入的文档按照预期进行了分词,同时基于切分后的短语可以检索到插入的数据。

 

四、总结


关注我们:

Havenask 开源官网:https://havenask.net/

Havenask-Github 开源项目地址:https://github.com/alibaba/havenask

阿里云 OpenSearch 官网:https://www.aliyun.com/product/opensearch

钉钉扫码加入 Havenask 开源官方技术交流群:

1715594790746.png

目录
相关文章
|
6月前
|
存储 人工智能 自然语言处理
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
ElasticSearch实战指南必知必会:安装分词器、高级查询、打分机制
|
8月前
|
算法 索引
阿里云 Elasticsearch 使用 RRF 混排优化语义查询结果对比
Elasticsearch 从8.8版本开始,新增 RRF,支持对多种不同方式召回的多个结果集进行综合再排序,返回最终的排序结果。之前 Elasticsearch 已经分别支持基于 BM25 的相关性排序和向量相似度的召回排序,通过 RRF 可以对这两者的结果进行综合排序,可以提升排序的准确性。
1661 0
|
5天前
|
SQL C++ 开发者
【技术解析 | 实践】Havenask-UDF定制
本节分享 Havenask UDF定制相关的内容,共包含3个部分,分关于 Havenask 的 UDF 相关的介绍、自定义 UDF 的开发及配置方法的介绍,最后将进行 UDF 定制的实际操作演示。
350 0
|
5天前
|
存储 自然语言处理 开发者
【技术解析 | 实践】Havenask文本索引
本次分享内容为Havenask的文本索引,本次课程主要分为两部分内容,首先简要介绍倒排索引的数据结构和文本索引的特性,然后进行对文本索引配置不同分析器的实践,希望通过分享帮助大家更好了解和使用Havenask。
319 2
|
5天前
|
自然语言处理 搜索推荐 算法
【一文读懂】基于Havenask向量检索+大模型,构建可靠的智能问答服务
Havenask是阿里巴巴智能引擎事业部自研的开源高性能搜索引擎,深度支持了包括淘宝、天猫、菜鸟、高德、饿了么在内的几乎整个阿里的搜索业务。本文针对性介绍了Havenask作为一款高性能的召回搜索引擎,应用在向量检索和LLM智能问答场景的解决方案和核心优势。通过Havenask向量检索+大模型可以构建可靠的垂直领域的智能问答方案,同时快速在业务场景中进行实践及应用。
110308 63
|
5天前
|
机器学习/深度学习 Serverless
RAG中的3个高级检索技巧
RAG系统检索的文档可能并不总是与用户的查询保持一致,这是一个常见的现象。当文档可能缺乏查询的完整答案或者包含冗余信息或包含不相关的细节,或者文档的顺序可能与用户的意图不一致时,就会经常出现这种情况。
293 2
|
10月前
|
自然语言处理 前端开发 Java
十.全文检索ElasticSearch经典入门-自动补全功能
十.全文检索ElasticSearch经典入门-自动补全功能
|
存储 JSON 自然语言处理
40-微服务技术栈(高级):分布式搜索引擎ElasticSearch(DSL语法、搜索结果[排序/分页/高亮]处理)
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
92 0
|
自然语言处理 数据库 索引
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
195 0
全文检索工具elasticsearch:第四章:开发电商的搜索列表功能
|
自然语言处理 数据库 开发者
索引和搜索流程简介|学习笔记
快速学习索引和搜索流程简介
121 0
索引和搜索流程简介|学习笔记