ELASTICSEARCH实现相似搜索思路

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: ELASTICSEARCH实现相似搜索思路

相似搜索的应用场景
回答问题:如果已有一系列常见问题,则可通过文本相似度来查找与用户所输入问题相似的问题。
文章搜索:从一系列文章中,返回与用户查询内容相关的文章。
图片搜索:对于由包含说明的图片组成的数据集,从中查找哪些图片的说明与用户描述相似。
如何实现?
目前elasticsearch有两种方案:

dense-vector
More Like This Query
dense-vector在elk 7.3版本开始支持,需要x-pack模块,且需要在索引的时候就处理并生成dense-vector,相对比较麻烦

More Like This Query是一个查询语法,在任意版本均可用,无需x-pack,且无需改动已经index的内容,语法如下

GET /_search
{
    "query": {
        "more_like_this" : {
            "fields" : ["title", "description"],
            "like" : "Once upon a time",
            "min_term_freq" : 1,
            "max_query_terms" : 12
        }
    }
}

fields:要执行查询的栏位
like:要查询相似的文本
min_term_freq:最小词频率,低于该频率的词将被忽略
max_query_terms:提取词的最大个数,其余的词将被忽略
另外,它还可以以某几篇具体的文章为标准来查询相似内容

GET /_search
{
    "query": {
        "more_like_this" : {
            "fields" : ["title", "description"],
            "like" : [
            {
                "_index" : "imdb",
                "_id" : "1"
            },
            {
                "_index" : "imdb",
                "_id" : "2"
            },
            "and potentially some more text here as well"
            ],
            "min_term_freq" : 1,
            "max_query_terms" : 12
        }
    }
}

原理
MLT查询从输入文档中提取文本,通常使用该字段中的同一分析器对其进行分析,然后选择tf-idf最高的前K个词构成这些词的析取查询。

参考
text-similarity-search
dense-vector
More Like This Query

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
4月前
|
安全 Linux 开发工具
Elasticsearch 搜索入门技术之一
Elasticsearch 搜索入门技术之一
245 1
|
4月前
|
存储 自然语言处理 负载均衡
【Elasticsearch专栏 03】深入探索:Elasticsearch倒排索引是如何提高搜索效率的
倒排索引通过直接关联文档内容,将关键词映射到相关文档,减少扫描范围,并使用高效数据结构快速查找和匹配关键词,从而显著提高搜索效率。此外,它支持复杂查询操作和搜索结果优化,进一步提高搜索的准确性和用户满意度。
208 1
|
12月前
|
存储 自然语言处理 搜索推荐
分布式搜索--elasticsearch
分布式搜索--elasticsearch
79 0
|
自然语言处理 搜索推荐 安全
使用 Elasticsearch 搭建自己的搜索系统,这个厉害了。。
使用 Elasticsearch 搭建自己的搜索系统,这个厉害了。。
196 0
使用 Elasticsearch 搭建自己的搜索系统,这个厉害了。。
|
索引
ElasticSearch 分布式搜索过程
ElasticSearch 分布式搜索过程
107 0
ElasticSearch 分布式搜索过程
|
索引
ELASTICSEARCH实现相似搜索思路
ELASTICSEARCH实现相似搜索思路
130 0
|
关系型数据库 MySQL Java
ElasticSearch 花式搜索详解(第七更)
ElasticSearch 花式搜索详解(第七更)
ElasticSearch 花式搜索详解(第七更)
|
PHP
【ElasticSearch】对于在laravle中搜索的优化
【ElasticSearch】对于在laravle中搜索的优化
116 0
【ElasticSearch】对于在laravle中搜索的优化
|
缓存 算法 固态存储
Elasticsearch搜索(查询)性能优化
本文介绍了es搜索性能优化的常见方式
2159 0
|
自然语言处理 算法 关系型数据库
ElasticSearch应用篇-搜索效果
本文主要讨论两个问题: 1.如何聚合多个节点或分片的数据生成返回结果? 2.ES是如何将相关度高的内容能放在前面的?
5886 0
ElasticSearch应用篇-搜索效果