博客
关于我
Elasticsearch--联想提示
阅读量:798 次
发布时间:2023-04-02

本文共 3119 字,大约阅读时间需要 10 分钟。

Elasticsearch 拼写纠正与自动补全技术说明

拼写纠正

在已建立的 articles 索引库中,Elasticsearch 提供了一种强大的查询功能——suggest(建议查询模式),其中最常用的是 word-phrase 模式。通过这种方式,可以实现关键词的拼写纠正功能。

操作方法:

  • 启动浏览器,访问 Elasticsearch 的控制台(默认地址为 127.0.0.1:9200)。
  • 在控制台中输入以下 curl 命令(可以直接复制粘贴):
  • curl 127.0.0.1:9200/articles/article/_search?pretty -d '{    "_source": false,    "suggest": {        "text": "phtyon web",  # 输入的内容        "word-phrase": {  # 自定义字段名, 推荐结果会包含在该字段中            "phrase": {  # 返回短语形式, 还可以使用term                "field": "_all",  # 指定在哪些字段中获取推荐词                "size": 1  # 返回的推荐词数量            }        }    }}'
    1. 输入错误的关键词(例如 phtyon web),Elasticsearch 将根据索引库数据返回正确的拼写建议 python web
    2. 自动补全

      自动补全功能可以通过创建专门的索引库来实现。以下是创建自动补全索引库的步骤:

      索引库映射设置:

    3. 在控制台中执行以下 curl 命令创建自动补全索引库:
    4. curl -X PUT 127.0.0.1:9200/completions/_mapping/words -H 'Content-Type: application/json' -d'{     "words": {          "properties": {              "suggest": {  # 自定义的字段名  存储文章的标题                  "type": "completion",    # 自动补全的类型必须completion                  "analyzer": "ik_max_word"              }          }     }}'
      1. 确认映射设置完成后,自动补全功能就可以正常使用。
      2. 查询自动补全:

      3. 在控制台中输入以下 curl 命令进行查询:
      4. curl 127.0.0.1:9200/completions/words/_search?pretty -d '{    "suggest": {        "title-suggest" : {  # 自定义字段名, 推荐结果会包含在该字段中            "prefix" : "pyth",   # 输入的内容  补全结果python            "completion" : {                  "field" : "suggest" # 指定在哪些字段中获取推荐词            }        }    }}'
        1. 输入前缀(例如 pyth),系统将返回完整的补全词 python
        2. 搜索建议接口

          在实际应用中,搜索建议接口的实现可以通过以下步骤完成:

        3. 自动补全优先:首先尝试自动补全查询,如果没有找到相关结果,再进行拼写纠正查询。
        4. 代码实现示例
        5. class SuggestionResource(Resource):    """联想建议"""    def get(self):        """获取联想建议"""        # 解析参数        qs_parser = RequestParser()        qs_parser.add_argument('q', type=inputs.regex(r'^.{1,50}$'), required=True, location='args')        args = qs_parser.parse_args()        q = args.q        # 首先尝试自动补全建议查询        query = {            'from': 0,            'size': 10,            '_source': False,            'suggest': {                'word-completion': {                    'prefix': q,                    'completion': {                        'field': 'suggest'                    }                }            }        }        ret = current_app.es.search(index='completions', body=query)        options = ret['suggest']['word-completion'][0]['options']        # 如果没有结果,进行纠错建议查询        if not options:            query = {                'from': 0,                'size': 10,                '_source': False,                'suggest': {                    'text': q,                    'word-phrase': {                        'phrase': {                            'field': '_all',                            'size': 1                        }                    }                }            }            ret = current_app.es.search(index='articles', doc_type='article', body=query)            options = ret['suggest']['word-phrase'][0]['options']        results = []        for option in options:            if option['text'] not in results:                results.append(option['text'])        return {'options': results}

          注意事项:

        6. 自动补全功能需要单独创建索引库,且推荐词类型必须设置为 completion
        7. 在实际应用中,建议先进行自动补全查询,如果无结果再进行拼写纠正查询。

    转载地址:http://pmefk.baihongyu.com/

    你可能感兴趣的文章
    opencv32-基于距离变换和分水岭的图像分割
    查看>>
    opencv4-图像操作
    查看>>
    opencv5-图像混合
    查看>>
    opencv9-膨胀和腐蚀
    查看>>
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>
    OpenCV与AI深度学习 | 基于GAN的零缺陷样本产品表面缺陷检测
    查看>>
    OpenCV与AI深度学习 | 基于OpenCV和深度学习预测年龄和性别
    查看>>
    OpenCV与AI深度学习 | 基于Python和OpenCV将图像转为ASCII艺术效果
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
    查看>>
    OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 基于YOLO11的车体部件检测与分割
    查看>>
    OpenCV与AI深度学习 | 基于YOLOv8的停车对齐检测
    查看>>
    OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
    查看>>
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>
    opencv之模糊处理
    查看>>
    opencv保存图片路径包含中文乱码解决方案
    查看>>