Easysearch、Elasticsearch 还是 Opensearch,是个问题

如何限制搜索结果中同一类型数据的结果数(同一类型有特定含义,如同一企业,同一发布人等)

Elasticsearch | 作者 Abyss | 发布于2014年11月20日 | 阅读数:4728

举个例子:

有一type,type中有zwname(职位名称),companyname(企业简称),companyname_all(企业全称)3个字符串(分词)。

表中有数据若干,其中A企业名称为XX工程师YY分院,有十个职位。

在搜索“工程师”的时候,因为会对3个字符串字段(上面说的)都进行匹配。经过排序后,比如第2~11个的数据恰好是A企业的10个职位。

有没有什么办法可以优化一下这种显示结果。
希望能达到的效果:
搜索“工程师“的时候,A企业的10个职位只显示3个,即第2~4的数据是A企业的职位,5~11是其他企业的职位。
已邀请:

Rubricate - hi

赞同来自:

你的这个定制化这么高,通过调整打分公式来做,不好做到,还麻烦。

要么遇到工程师,就分两次请求,
一次带企业全称的field,只取三个,
一次不带企业全称的field,取7个

我之前的一个需求,就是需要散列结果,我就是多线程跑出来自己组装的

Abyss - 90后IT男

赞同来自:

目前使用多重aggs嵌套聚合,在一定程度上可以解决这个问题。

我现在的做法是:
先用filter aggregation过滤一遍条件,然后用terms aggregation限制企业编号,最后用top hits aggregation取职位信息。
这样确实可以做到一个企业的职位信息只返回一条,但是这样的做法产生了2个新的问题:
1、查询速度慢
2、分页困难
第二个问题还好解决一些,但是查询速度慢这个就很致命了。我们做的实时搜索,速度慢这种方案就可以直接枪毙了~

要回复问题请先登录注册