当前位置: 首页 > 知识库问答 >
问题:

rails:使用elasticsearch咀嚼宝石使用数据地址键入搜索

益兴生
2023-03-14

我用耐嚼宝石弹力搜索。

我有LocationsIndex,mapping:

class LocationsIndex < Chewy::Index
  settings analysis: {
    analyzer: {
      folding: {
          tokenizer: "standard",
          filter:  [ "lowercase", "asciifolding" ]
        },
      sorted: {
        tokenizer: 'keyword',
        filter: ['lowercase', 'asciifolding']
      }
    }
  }

  define_type Location do
    field :name, type: 'string', analyzer: 'standard' do
      field :folded, type: 'string', analyzer:   "folding"
    end
    field :address, type: 'string', analyzer: 'standard' do
      field :address, type: 'string', analyzer: 'folding'
    end
    field :locations, type: 'geo_point', value: ->{ {lat: lat, lon: lon} }
  end

end

当我查询:

LocationsIndex::Location.query(
        multi_match: {
          query: keyword,
          fields: ["address", "address.folded" ,"name", "name.folded"]
        }
      )

数据示例:

当我使用关键字=“Vietnam”运行查询时

result :
 _id = [131,132,,133,134,135,136,137,138,139,130]  # => OK working
result :
     _id = [132,135,139]  # => Don't working ???, should have been: _id = [132,135,136,137,138,139]

与keywork=“hue”相同

result :
         _id = [132,135]  # => Don't working ???, should have been: _id = [132,135,136,137,138,139]

如何搜索包含上述单词的结果(添加类型或执行任何操作)

共有1个答案

韩安顺
2023-03-14

声明字段address时出错。您声明的是address.address而不是address.folded。换言之,声明应:

field :address, type: 'string', analyzer: 'standard' do
  field :folded, type: 'string', analyzer: 'folding'
end
 类似资料:
  • 以下是events_controller.rb的代码 为了调试,我尝试将行更改为event.create(params[]),此时错误从参数数错误(1表示0)变为参数数错误(0表示1)。 以下是event.rb的代码

  • 问题内容: 詹金斯(Jenkins)正在为我们运行一个Ant构建。Ant构建了一个Objective-C项目的CI-一个可在iOS和OSX上使用的库。 这个Ant构建可以在Jenkins中运行,也可以在Jenkins中运行,因此开发人员可以在签入之前验证其工作,并且Jenkins将提供另一层检查。(因此减少了构建失败影响其他贡献者的机会)。 我创建了一个执行以下任务的任务: 。。即使机器已安装RV

  • 如果我更改为: 代码运行良好-但我想转换工作。

  • 问题内容: 我目前正在使用Tire Client进行elasticsearch。可以说我有一个字段,该字段在我的elasticsearch映射中被索引为很长的类型的字段。我正在尝试实现以下目标: “ id”是我一直在谈论的领域。但是由于我在查询中指定了字段,所以通配符不起作用,最终我得到了唯一匹配的结果。 但是对_all搜索也可以执行相同的操作,因为字段类型无关紧要。我希望此通配符搜索有效,同时还

  • 问题内容: 弹性搜寻1.6 我想索引包含连字符的文本,例如U-12,U-17,WU-12,T恤…,并能够使用“简单查询字符串”查询来搜索它们。 数据样本(简体): 所以我去了这个映射: 使用以下查询进行搜索: 什么有效: “ U-12”,“ U ”,“ t ”,“ ts *” 什么不起作用: “ U-”,“ u-1 ”,“ t-”,“ t-sh ”,… 看来char过滤器未在搜索字符串上执行?我该

  • 问题内容: 我已经使用此批量请求设法用4个文档填充了索引: 开机自检 现在如何在所有可用 标题* 上使用 通配符 进行 搜索 ? *** 类似于 但提供一个或多个通配符的东西。例如,搜索“ ”并解析来自elasticsearch的响应以最终返回如下内容: 谢谢! 问题答案: Elasticsearch在常规匹配查询中提供正则表达式支持 给你这个 要更新到您的问题URI搜索,我不确定是否可行,如果使