我的模型有一个标记字段,它是一个标记数组。我遇到的问题是,我希望标签像关键字一样工作,但ES出于分面的目的,不知何故将它们拆分成空格。
映射为:
indexes :tags, type: :array常用标签的查询为:
tire.search do
facet 'tags' do
terms :tags, size: 100
end
end现在,结果是单个单词。例如,一张标记为“复古音乐”、“棒极了”的唱片最终会有三个不同的标签。类似地,如果我查询“复古音乐”(must { term 'tags', options[:tag] }),它将失败,而查询“复古”或“音乐”将会成功。这里想要的行为是标签应该是原子的,所以只有“复古音乐”(或“棒极了”)标签搜索才会成功。
发布于 2012-08-12 07:52:51
默认情况下,elasticsearch使用“标准”分析器分析字符串,该分析器将字符串转换为小写,将其拆分为单词,并删除一些频繁出现的单词(停用单词)。您可以通过关闭字段标签的分析器来阻止elasticsearch执行所有这些操作:
indexes :tags, :type => 'string', :index => :not_analyzed 发布于 2013-07-19 20:25:22
对我来说,解决方案是像上面这样的:index => :not_analyzed,并使用Page.create_elasticsearch_index而不是Page.import来构建索引,如https://stackoverflow.com/a/14693422/524458所示。
https://stackoverflow.com/questions/11917835
复制相似问题