3

我们一直在将旧的“快速导航”/搜索从 Tyre 重建为 Searchkick,因为使用标准分析器和标记器的结果似乎可以满足我们的需求。但是,我们需要搜索多个模型,这给我们带来了一些问题。

该域是虚拟主机。考虑代表包含帐户、数据库和应用程序的服务器的对象。应用程序有许多域,而这些域又具有 SslCertificate。

这意味着当我们搜索“something”时,如果我们有一个数据库“something”、一个帐户“something”和一个域“something.com”,我们希望帐户位于顶部,然后是数据库和域。问题是因为我们在不同的索引中搜索这些分数是不可靠的。

设置对所有模型使用 number_of_shards 1。我相信问题的根源在于,如果我理解正确,“独特性”就会得到回报。也就是说,如果 5000 个对象中有 1 个数据库匹配,100 个对象中有 1 个帐户匹配,则数据库匹配更独特,得分更高。

我们如何去调整这个?据我了解,在某些模型中没有办法提高字段的分数。

4

1 回答 1

0

最好的办法是修改 Searchkick 生成的查询。 https://github.com/ankane/searchkick#advanced

如果您从 Tire 迁移,请尝试相同的 boost 代码。

或者,如果这不能解决问题,请尝试以下方法之一: http ://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/query-dsl-function-score-query.html

于 2014-05-21T06:42:11.030 回答