【问题标题】:Tire search return terms by first letter轮胎搜索返回词首字母
【发布时间】:2013-11-04 22:49:13
【问题描述】:

我正在使用 Tire/ElasticSearch 创建数据库中所有标签的字母浏览。但是,轮胎搜索返回我想要的标签以及与同一项目关联的所有其他标签。因此,例如,如果我的字母是“A”并且一个项目有标签“土豚”和“饼干”,那么“土豚”和“饼干”都会显示为“A”查询的结果。我怎样才能构造它以便我只得到“土豚”?

 def explore
 #get alphabetical tire results with term and count only

    my_letter = "A"

    self.search_result = Tire.search index_name, 'tags' => 'count' do 
      query {string 'tags:' + my_letter + '*'}
        facet 'tags' do
          terms 'tags', :order => 'term'
      end

    end.results  
  end

映射:

{
    items: {
        item: {
            properties: {
                tags: {
                    type: "string",
                    index_name: "tag",
                    index: "not_analyzed",
                    omit_norms: true,
                    index_options: "docs"
                  },
              }
           }
       }
   }

【问题讨论】:

  • 你能发布你的itemtags的映射吗?另外,你能具体说明你想要什么吗?我的意思是,你想要项目和它的标签,还是你只找到标签?
  • 我只想要标签列表和计数。因此,如果您单击 A 链接,您将获得所有以 A 开头的标签以及每个标签在数据库中出现的次数。点击B标签你会得到所有以B开头的标签,以此类推。我已编辑我的帖子以包含映射。

标签: ruby elasticsearch tire


【解决方案1】:

以下您需要更改的内容:

  1. 映射 您需要正确映射标签才能搜索它们。由于您的标签在您的项目文档中,您需要将标签的属性设置为嵌套,以便您也可以在构面中应用搜索查询。这是您需要设置的映射:

    {
      item: {
        items: {
          properties: {
            tags: {
              properties: {
                 type: "nested",
                 properties: {
                    value: {
                    type: "string",
                    analyzer: 'not_analyzed'
                    }
                 }
              }
           }
         }
       }
      }
    }
    
  2. 查询 现在,您可以使用前缀查询来搜索以某个字母开头的标签并获取分面,这是完整的查询:

    询问: { 嵌套:{ 路径:“标签”, 询问: { 字首: { 'tags.value':'A' } } } } 方面:{ 字: { 条款:{字段:'tags.value'}, 类型:'嵌套', facet_filter:{前缀:{ 'tags.value':'A' } } } }

在计算构面时应用构面过滤器,因此您只会获得符合您的条件的构面。我更喜欢前缀查询而不是常规 exp。由于性能问题而查询。但我不太确定前缀查询是否适用于您的问题。让我知道它不起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    相关资源
    最近更新 更多