如果弹性搜索得分超过1,我如何要求Tire返回

时间:2013-03-14 23:04:44

标签: ruby full-text-search elasticsearch tire

我正在尝试仅返回_score超过1的文档。我不知道该怎么做。我可以获得所有返回的文档,并在ruby代码中单独检查,但我想这可以直接从elasticsearch完成。

这是我现在的查询。

tag_results = Tire.search $index_elasticsearch do
            query do
                boolean do
                    should { fuzzy(:tags, query, {:min_similarity => 0.85}) }
                    should { string "description:#{query}" }
                    should { string "description1:#{query}" }
                end
            end
        end

提前致谢!

2 个答案:

答案 0 :(得分:2)

您可以在搜索中使用min_score参数指定要接受结果必须满足的最低分数。

在实践中,分数各不相同。你不会得到一致的结果。更好的方法是使查询的要求足够高,以便它们不包含仅略微相关的结果。

例如,请查看minmum_should_matchbool查询中的match参数。它可以设置为例如"60%"

答案 1 :(得分:0)

所以我发现有一种方法可以将min_score传递给Tire。

IE。如果你只想要得分>的结果1

Tire.search $index_elasticsearch do
   min_score 1
end