gpt4 book ai didi

elasticsearch - 返回用户的热门标签列表

转载 作者:行者123 更新时间:2023-12-03 00:30:27 26 4
gpt4 key购买 nike

我正在尝试使用ElasticSearch和Tire获取用户的顶级标签列表。

我已经看到this article随处可见,但是在我的情况下它并不完全起作用。

我需要按user_id进行过滤,目的是完全不返回匹配。我还没有找到一种将其与Tire一起使用的方法。

我尝试了以下方法:

Tire.search 'bookmarks' do |s|
s.query { all }
s.facet 'tags', facet_filter: { term: { user_id: 1 } } do
terms :tags, all_terms: true
end
end

感谢您的帮助,谢谢。

编辑:使用上面的代码,返回以下输出。
=> #<Tire::Search::Search:0x007fd4b0bed110 @indices=["bookmarks"], 
@types=[], @options={}, @path="/bookmarks/_search",
@query=#<Tire::Search::Query:0x007fd4b0bec5d0 @value={:match_all=>{}}>,
@facets={"tags"=>{:terms=>{:field=>:tags, :size=>10, :all_terms=>true},
:facet_filter=>{:term=>{:user_id=>1}}}}>

编辑2:我已经完成了下面的代码:
# Public: Returns an array of hashes, which includes the user's top
# tags and a number of items in those tags.
#
# Format follows:
# [{'term' => 'Some Tag', 'count' => 123}, {'term' => 'Another Tag', 'count' => 321}]
#
def self.top_tag_count(user_id, number_of_tags=10)
top_tags = tire.search search_type: 'count' do |s|
s.query { all }
s.filter :term, user_id: [user_id]
s.facet 'tags', global: true do
terms :tags, size: number_of_tags
end
end
top_tags.facets['tags']['terms']
end

最佳答案

Facet的Tire integration test包含许多可能情况的示例。

您似乎使用了正确的方法-您没有描述输出以及想要看到的内容。

关于elasticsearch - 返回用户的热门标签列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996450/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com