首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多字切面(ElasticSearch+Tire)

多字切面(ElasticSearch+Tire)
EN

Stack Overflow用户
提问于 2012-08-12 05:32:45
回答 2查看 1.7K关注 0票数 1

我的模型有一个标记字段,它是一个标记数组。我遇到的问题是,我希望标签像关键字一样工作,但ES出于分面的目的,不知何故将它们拆分成空格。

映射为:

代码语言:javascript
复制
indexes :tags, type: :array

常用标签的查询为:

代码语言:javascript
复制
tire.search do
  facet 'tags' do
    terms :tags, size: 100
  end
end

现在,结果是单个单词。例如,一张标记为“复古音乐”、“棒极了”的唱片最终会有三个不同的标签。类似地,如果我查询“复古音乐”(must { term 'tags', options[:tag] }),它将失败,而查询“复古”或“音乐”将会成功。这里想要的行为是标签应该是原子的,所以只有“复古音乐”(或“棒极了”)标签搜索才会成功。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-12 07:52:51

默认情况下,elasticsearch使用“标准”分析器分析字符串,该分析器将字符串转换为小写,将其拆分为单词,并删除一些频繁出现的单词(停用单词)。您可以通过关闭字段标签的分析器来阻止elasticsearch执行所有这些操作:

代码语言:javascript
复制
indexes :tags, :type => 'string', :index => :not_analyzed 
票数 7
EN

Stack Overflow用户

发布于 2013-07-19 20:25:22

对我来说,解决方案是像上面这样的:index => :not_analyzed,并使用Page.create_elasticsearch_index而不是Page.import来构建索引,如https://stackoverflow.com/a/14693422/524458所示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11917835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档