我正在通过聊天制作专业的社交应用。我想建议用户添加为好友。这些建议仅基于标题:开发人员,建筑师,歌手......
目前的弹性查询过于挑剔,因此我缺乏建议:
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。
答案 0 :(得分:0)
为了能够找到dev
和developer
,bartender
和barber
之间的对应关系,可以尝试运行prefix queries。
{
"query": {
"prefix" : { "titlePhrase" : "dev" }
}
}
这将允许相同前缀之间的匹配。