首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Elasticsearch -模糊搜索没有给出建议

Elasticsearch -模糊搜索没有给出建议
EN

Stack Overflow用户
提问于 2020-03-05 22:15:08
回答 2查看 823关注 0票数 2

我试图通过NodeJS在Elasticsearch中实现一个模糊/自动完成搜索。我已经按索引"artist"索引了数据。下面是ES中存储的数据的示例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "hits": [{
    "_index": "artist",
    "_type": "_doc",
    "_id": "EyejqnAB2pHGVJHwV53Q",
    "_score": 1,
    "_source": {
      "kind": "song",
      "artistId": 111051,
      "artistName": "Eminem",
      "trackName": "Crack a Bottle (feat. Dr. Dre & 50 Cent)",
      "collectionName": "Relapse (Deluxe Version)",
      "collectionCensoredName": "Relapse (Deluxe Version)",
      "artistViewUrl": "https://music.apple.com/us/artist/eminem/111051?uo=4",
      "collectionViewUrl": "https://music.apple.com/us/album/crack-a-bottle-feat-dr-dre-50-cent-feat-dr-dre-50-cent/1440558626?i=1440558826&uo=4",
      "trackViewUrl": "https://music.apple.com/us/album/crack-a-bottle-feat-dr-dre-50-cent-feat-dr-dre-50-cent/1440558626?i=1440558826&uo=4",
      "previewUrl": "https://audio-ssl.itunes.apple.com/itunes-assets/AudioPreview128/v4/da/a5/c1/daa5c140-2c3d-1f74-40c3-b6e596e52b82/mzaf_7480202713407880256.plus.aac.p.m4a",
      "artworkUrl100": "https://is1-ssl.mzstatic.com/image/thumb/Music128/v4/c5/f8/fd/c5f8fdf6-d4c9-85c9-d169-c5d349a44f1c/source/100x100bb.jpg",
      "collectionPrice": 12.99,
      "releaseDate": "2009-02-02T12:00:00Z",
      "collectionExplicitness": "explicit",
      "trackExplicitness": "explicit",
      "discCount": 1,
      "discNumber": 1,
      "trackCount": 24,
      "trackNumber": 18,
      "country": "USA",
      "currency": "USD"
    }
  }]
}

上面的artistNameEminem一样有价值,问题是当我输入'e'时,它没有显示任何东西,在'em'emiemin上也是如此。当我输入emine时,它就开始给出结果。我哪里出问题了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-06 00:03:48

实现自动完成功能的方法有多种,模糊搜索是不正确的(它主要用于搜索相关文档w.r.t到令牌(Dupe)和拼写检查器中引用,用于模糊搜索的应用)。

在您的情况下,如果索引大小不是很大,并且将最小字符长度限制为两个,那么我建议使用 前缀查询 ,即不要搜索e,只有当用户键入两个或多个字符( ememiemin等)时才显示搜索结果。

工作实例

索引映射

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "mappings": {
        "properties": {
            "artistName": {
                "type": "text"
            }
        }
    }
}

索引文档

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
   "artistName" : "Eminem"
}

{
   "artistName" : "Emiten"
}

搜索查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "query": {
        "prefix": {
            "artistName": {
                "value": "em"
            }
        }
    }
}

搜索结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
            "_index": "so-60558525-auto",
            "_type": "_doc",
            "_id": "1",
            "_score": 1.0,
            "_source": {
               "artistName": "Eminem"
            }
         },
         {
            "_index": "so-60558525-auto",
            "_type": "_doc",
            "_id": "2",
            "_score": 1.0,
            "_source": {
               "artistName": "Emiten"
            }
         }

重要阅读

大致上有四种实现自动完成的方法,每一种方法都有一些折衷,您应该意识到为您的功能需求以及非功能性(性能、维护、实现困难)辩护。

票数 1
EN

Stack Overflow用户

发布于 2020-03-05 22:41:14

匹配查询返回与提供的文本、数字、日期或布尔值匹配的文档。在匹配之前对所提供的文本进行分析。示例文本:“这是一个测试”与标准分析器存储为"this“、" is”、"a“、"token”文本,您正在搜索的文本也将被分解为令牌,并且这些令牌将被匹配。

模糊性:取一个术语,并在字典中找到所有在指定模糊范围内的术语。默认的模糊性是自动的。

下面是auto的值--它根据术语的长度生成编辑距离。长度: 0..2 -必须完全匹配3..5 -允许一次编辑

5-允许两次编辑

因此,您可以搜索"emine“,因为编辑距离为1。

要实现自动完成,可以使用1. EdgeNgrams 2.完成提示程序。

指向上述1.AutoCompletion 2. 模糊性的链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60558525

复制
相关文章
DRAM:实现国产可替代的愿望挺难的
如今,“1bit只要1美元”的厂商早已退出DRAM市场, “三分天下”的局面难以打破,国产内存的希望如星星之火,尚不可燎原。
AI 电堂
2021/08/23
9520
DRAM:实现国产可替代的愿望挺难的
良好的BUG报告可以为您节省宝贵的时间。
一份糟糕的BUG记录不仅烦人,而且大大增加了时间长的开销。为你的下一份BUG报考增加更多更详细的信息,可以使你更快速的定位BUG从而节省时间成本。
疯狂的技术宅
2019/03/27
3700
良好的BUG报告可以为您节省宝贵的时间。
你以为Spring Boot统一异常处理能拦截所有的异常?
这类图相信大家没少见,Spring Boot 只要出错,体现在页面上的就是这个。如果你用Postman之类的测试出了异常则是:
码农小胖哥
2021/05/14
2.5K0
抢了个票,还以为发现了12306的系统BUG
12306在很久以前,对购票和乘车规则是有限制的,当同一乘车人的两张车票涉及的行程出现冲突时,会拒绝购票请求。
Coder的技术之路
2022/09/19
7380
抢了个票,还以为发现了12306的系统BUG
PostgreSQL 为什么Archive 缓慢或不归档,问题的原因在哪里
POSTGRESQL 中是可以对日志进行ARCHIVE 的, 但经常会有一个问题就是ARCHIVE 的速度好像经常没有产生WAL 日志的速度快,有的时候很长一段时间WALLOG 都没有被ARCHIVE, 原因是什么.
AustinDatabases
2020/11/26
1.9K0
jquery 列表可拖动排序 sortable
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery UI Sortable</title> <style type="text/css"> #myList{ width: 80px; background: #EEE; padding: 5px; list-style: none; } #myList a{ text-decoration: none; color: #0077B0; } #myList a:hover{ text-decoration: underline; } #myList .qlink{ font-size: 12px; color: #666; margin-left: 10px; } </style> </head> <body> <ul id="myList"> <li><a href="#">心情</a></li> <li> <a href="#">相册</a> <a href="#" class="qlink">上传</a> </li> <li> <a href="#">日志</a> <a href="#" class="qlink">发表</a> </li> <li><a href="#">投票</a></li> <li><a href="#">分享</a></li> <li><a href="#">群组</a></li> </ul>
用户5760343
2019/10/10
2.4K0
jquery 列表可拖动排序 sortable
POSTGRESQL 以为是BUG,其实是PG的特性 与感谢
昨天的文字中,提到了一个自己认为是POSTGRESQL 问题的文字,就是在建立表的时候,在输错类型后,还是会通过,具体请参见昨天的文字.
AustinDatabases
2021/05/11
6960
POSTGRESQL  以为是BUG,其实是PG的特性 与感谢
归档
归档 基本概念 - 对象归档是指将对象写入文件保存在硬盘上,当再次重新打开程序时,可以还原这些对象。你也可以称他为对象序列化,对象持久化。 数据持久性的方式 NSKeyedArchiver --- 对象归档 NSUserDefaults 属性列表化(NSArray、NSDictionary保存文件) SQlite数据库、Core Data数据库 归档的形式 对Foundation库中对象进行归档 自定义对象进行归档(需要实现归档协议,NSCoding) 归档后的文件是加密的,属性列表是明文的。属性列表也不
用户1941540
2018/05/11
1.2K0
归档
tar是“tape archive”(磁带存档)的简称,它出现在还没有软盘驱动器、硬盘和 光盘驱动器的计算机早期阶段,随着时间的推移, tar命令逐渐变为一个将很多文件进行存档的工具,目前许多用于Linux操作系统的程序就是打包为tar档案文件的形式。 在Linux里面,tar一般和其他没有文件管理的压缩算法文件结合使用,用tar打包整个文件目录结构成一个文件,再用gz,bzip等压缩算法压缩成一次。也是Linux常见的压缩归档的处理方法
酷走天涯
2019/05/26
1.1K0
关于Linux的grep -f命令,我以为我发现了bug
今天,我像往常一样提取基因组的样本,我有一堆样本的ID,需要从所有的基因型的文件中提取出来。
邓飞
2021/09/03
1.2K0
智能图形和列表在哪里呢?慢慢学会SmartArt智能图形和列表。
1、点击[插入] 2、点击[SmartArt] 3、点击[循环] 4、点击[图片] 5、点击[确定]
裴来凡
2022/05/28
9960
智能图形和列表在哪里呢?慢慢学会SmartArt智能图形和列表。
可迭代对象 python_列表是可迭代对象吗
引出问题: ​如下面所示,存在一个类,并且产生了一个对象,现在想用for循环实现对象的迭代,结果报错了
全栈程序员站长
2022/09/21
9160
Bug 看你往哪里逃?我会让你无所遁形
编程中的 Bug ,Error 等各种报错是不可避免的,如果有一个好的 logcat 工具绝对可以帮助大家快速的定位到错误,并高效的找到解决办法。
非著名程序员
2018/07/30
3330
Bug 看你往哪里逃?我会让你无所遁形
通过RMAN设置standby接收日志后主库归档日志才可删除
因为Oracle archivelog会不断生产,一般会设置定期清理archivelog的排程,类似下面。
PHP开发工程师
2021/05/25
1.5K0
【C++11】统一的 {} 列表初始化
​ 在 C++98 中,标准允许使用花括号 {} 对数组或者结构体元素进行统一的列表初始值设定。比如:
利刃大大
2025/03/01
980
【C++11】统一的 {} 列表初始化
主动推理 与 信念-愿望-意图 (BDI)
Active inference models do not contradict folk psychology
CreateAMind
2022/11/22
6950
主动推理 与 信念-愿望-意图 (BDI)
我以为发现了Android 14系统中的一个bug,然而...
事情的起因是这样的,某天工作群里,我看到我们部门的同事guting发了这样一条消息。
用户1158055
2024/01/10
8980
我以为发现了Android 14系统中的一个bug,然而...
tar - 归档
参数 说明 z 创建 gzip 格式的压缩包 j 创建 bz2 格式的压缩包 J 创建 xz 格式的压缩包 x 解压一个压缩包 c 创建一个压缩包 t 查看压缩包的内容 r 把文件追加到压缩包末尾 u 用新的文件替换压缩包中的旧文件 # 创建一个压缩包,排除一些文件 tar zcvf data.tar.gz -T /root/aa -X /root/bb -T:指定需要压缩的目录或文件,需要绝对路径 -X:指定需要排除的文件或目录,需要绝对路径
陳斯托洛夫斯記
2022/10/27
1.4K0
PostgreSQL 13.0-13.15 功能更新和bug fixed列表
在总结了PostgreSQL 12 14 15 16版本的release note和bug fixed的细节后,此次总结最后的一部分 PG13的release note里面的信息。PG13 有15个版本,我们从PG13.1 开始
AustinDatabases
2024/11/25
1490
PostgreSQL 13.0-13.15 功能更新和bug fixed列表
从MYSQL 数据库归档 到 归档设计
到数据归档,很多人的第一个概念就是,不就是无用的数据,换个地方放吗,直接拷贝,删除不就得了,有那么麻烦。
AustinDatabases
2020/04/24
5.1K0

相似问题

我在哪里为木星小程序归档bug?

10

桌面菜单在哪里归档?

10

在哪里可以为iPad买到Ubuntu?

20

统一设置存储在哪里?

10

哪里可以为Ubuntu 20.04找到GNU 4.3

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文