elasticsearch - 如何配置 ElasticSearch 以增加单字字符串之间的模糊性
问题描述
我正在制作一个带有聊天功能的专业社交应用程序。我想建议用户添加为朋友。这些建议仅基于标题:开发人员、建筑师、歌手......
当前的弹性查询过于选择性,因此我缺乏建议:
query: {
bool: {
must_not: {
ids: {
values: _usersToIgnore
}
},
should: [
{
match: {
titlePhrase: {
query: title,
minimum_should_match: '90%',
boost: 2
}
}
}
],
minimum_should_match: 1
}
}
我试图降低minimum_should_match但它并没有改变什么,我想弹性匹配单词而不是字母。
弹性映射是:
titlePhrase: {
type: 'text',
analyzer: 'phrase_analyzer',
search_analyzer: 'phrase_analyzer'
}
(我对分析仪一无所知,制作此映射的不是我)
在我的大多数情况下,标题只是一个词。所以 Elastic 发现:
除了共享完全相同的标题之外的其他用户(即:开发人员)
用户比共享一个词(即:web 开发者、ios 开发者)
但它没有找到任何对应关系:
开发者和开发者
酒保和理发师(弹性不在乎是否共享大量信件)
你知道我怎样才能增加弹性的耐受性吗?我可以玩模糊查询,但它似乎很hacky。
解决方案
为了能够找到和之间的对应关系,可以dev
尝试运行前缀查询。developer
bartender
barber
{
"query": {
"prefix" : { "titlePhrase" : "dev" }
}
}
这将允许相同前缀之间的匹配。
推荐阅读
- html - 根据可用高度分配行内容
- highcharts - 如何提供 Highchart Grid 颜色模式
- css - mapbox如何舍入弹出窗口的角度
- java - 使用 WSL 设置 Microsoft Code for java
- c++ - 为什么我的交互式容器应用程序会自动输入
- r - 分类树的 R 问题
- apache-spark - 如何限制 Jupyter Notebook 的 PySpark 集群上的资源?
- android - 为什么相机不颤抖打开?
- visual-studio - VS Debugger 是否有任何脚本支持,类似于 GDB 的脚本?
- javascript - 在js或jquery中点击广告时调用函数