- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我一直在尝试将nGram匹配添加到我的ElasticSearch索引中,但是我遇到了以下问题。
执行标准字符串查询仅返回完全匹配。在特定测试字段上运行匹配查询会产生预期的nGram匹配。
我根据these(1) examples(2)为我的字段设置了nGram过滤器和分析器。映射代码如下:
tire.settings :number_of_shards => 1,
:number_of_replicas => 1,
:analysis => {
:analyzer => {
"str_search_analyzer" => {
"tokenizer" => "keyword",
"filter" => "lowercase"
},
"str_index_analyzer" => {
"tokenizer" => "keyword",
"filter" => ["lowercase","substring"]
}
},
:filter => {
:substring => {
"type" => "nGram",
"min_gram" => 1,
"max_gram" => 10
}
}
} do
mapping do
indexes :test, :type=>'string',
:search_analyzer => :str_search_analyzer,
:index_analyzer=>:str_index_analyzer
end
end
def to_indexed_json
#adding known word plus random string for testing
{
:test => "pizza" + (0...10).map{ ('a'..'z').to_a[rand(26)] }.join
}.to_json
end
curl -X GET "http://localhost:9200/users/_search?pretty=true" -d '{"query":{"text":{"test":{"query":"piz"}}}}'
curl -X GET "http://localhost:9200/users/_search?pretty=true" -d '{"query":{"query_string":{"query":"pizz"}}}'
最佳答案
这是预期的行为。默认情况下,对“_all”字段执行“query_string”查询。并且由于使用StandardAnalyzer对该字段进行了索引,因此其索引标记将与“test”字段(您配置为使用nGram分析器)的标记不同。
您可以通过几种方式来更改此行为:
关于ruby-on-rails - ElasticSearch with Tire与 'string'搜索上的nGrams不匹配,仅 'text',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12112568/
尝试了解围绕 Tire gem 进行测试的语法。 此 Controller 规范(默认来自脚手架模板)失败 describe "GET index" do it "assigns all
我有一个使用 CicleCI 进行测试的项目,我正在尝试集成 Tire 以实现搜索功能。在本地,所有测试都运行良好,没有问题。但是,当 CircleCI 运行测试时,我收到了 Errno::ECONN
我在这里一定会丢失一些东西,但是当我尝试在Elasticsearch上突出显示搜索内容时,我根本看不到任何突出显示内容,但是也没有错误。我认为这不是Tyre的问题,但我提起Tire只是为了以防万一。使
我仍在做错事。 有人可以帮我吗? 我想在Rails + Mongoid中使用ASCII过滤器创建一个自定义分析器。 我有一个具有字段名称的简单模型产品。 class Product include
如何使用tire gem checkin rspec测试:ElasticSearch索引中是否存在文档? 例: #model class Car include Mongoid::Document
我正在使用出色的Tyre gem 。但是,我在文档中找不到如何执行此操作。基本上,我想在Tire的date_histogram中添加一个值字段。但是,我似乎无法对我尝试过的所有选项都满意。 http:
我的模型有一个标签字段,它是标签的数组。我遇到的问题是我希望标签像关键字一样工作,但是ES出于某种目的将标签分成多个空格。 映射为: indexes :tags, type: :array 流行标签的
我正在为轮胎问题而苦苦挣扎。 在我的模型中,我添加了映射: indexes :localized_title, :as => "localized_title" 和返回翻译哈希值的函数 def loc
大型 Web 应用程序提供“全局”搜索,它结合来自各种全文索引(这将是 SQL 中的表)的数据,以提供按其分数排序的组合搜索结果。假设您有视频、博客文章和用户,那么当您在搜索中输入“home”时,它可
阅读 ElasticSearch 文档 (http://www.elasticsearch.org/guide/reference/mapping/boost-field.html) 它说您可以根据值
我有一个附加了构面的ElasticSearch / Tire查询。看来,方面使用了全局范围,而不是查询范围和过滤器。 这是我的定义。我不确定如何确定其范围以使用过滤器。 def self.facet
我正在尝试使用Rails(3.2.8),Tire和ElasticSearch创建自定义映射。 我希望“title”和“description”成为唯一可搜索/索引的属性……但是,我似乎无法使这项工作有
我通常用过滤器搜索轮胎,一切正常。 但是我想精确地进行搜索,例如,如果我搜索“dfssdljf”,它不会返回任何数据,但是目前它返回的是完全无关的数据。 根据Tire属性,我可以拒绝_score 0
我在用Tire定义查询时遇到了麻烦。 我所拥有的: 我的文件是事件。他们有一个starts_at日期和一个ends_at日期。 不需要ends_at日期。 我想要的: 我想显示即将发生的事件(例如)。
到目前为止,您一直很喜欢Tyre和elasticsearch,但无法弄清楚如何在以下范围之间搜索值: age_from age_to 18至20 并返回年龄在这两个范围之间的所有配置文件? 我有一个整
即使我已经看到很多关于它的描述都相对简单,但我仍然没有设法使其正常运行。假设我有这个: class Car [For]代替-> [For,ord] 有关自动完成的一些更高级的链接: Autocomp
如何在Tire中指定构面的顺序? 可以在Elasticsearch中看到,如下所示: http://www.elasticsearch.org/guide/reference/api/search/f
我正在开发一个 Rails 应用程序。使用 gem 轮胎作为 Elasticsearch 的纽带。我想以多步形式在程序结束时进行索引。 有没有办法在创建时跳过索引。 猜测:Post.create( :
Cross post from GitHub : 我的应用程序在各种第 3 方服务(如 Delicious、Twitter)中搜索链接……我有以下基类: class Link include Mo
现在我有以下代码: search = Tire.search ['object1_index', 'object2_index'] do |search| search.query { strin
我是一名优秀的程序员,十分优秀!