【发布时间】:2014-08-13 23:50:17
【问题描述】:
我正在尝试在我的项目中使用 Elasticsearch-Gem。据我了解:现在已经不需要轮胎宝石了,还是我错了?
在我的项目中,我有一个搜索(显然),它目前适用于一个模型。现在我试图避免使用通配符,因为它们不能很好地扩展,但我似乎无法让 ngram-Analyzers 正常工作。如果我搜索整个单词,搜索仍然有效,但部分搜索无效。
class Pictures < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
settings :analysis => {
:analyzer => {
:my_index_analyzer => {
:tokenizer => "keyword",
:filter => ["lowercase", "substring"]
},
:my_search_analyzer => {
:tokenizer => "keyword",
:filter => ["lowercase", "substring"]
}
},
:filter => {
:substring => {
:type => "nGram",
:min_gram => 2,
:max_gram => 50
}
}
} do
mapping do
indexes :title,
:properties => {
:type => "string",
:index_analyzer => 'my_index_analyzer',
:search_analyzer => "my_search_analyzer"
}
也许有人可以给我一个正确方向的提示。
【问题讨论】:
-
始终值得通过查询 elasticsearch 来检查您的设置和映射是否符合您的预期:
curl -XGET 'http://localhost:9200/pictures/_settings?pretty=true'和curl -XGET 'http://localhost:9200/pictures/_mapping?pretty=true -
你解决了吗?我也被困在这一点上。我可以通过 CURL 让它工作,但不能使用 Elasticsearch-Rails。
-
很想知道是否有人发现了这一点。文档非常糟糕——我不明白他们为什么使用这种
mapping do ...语法,而不是像你传递给 ES 那样只给出一个哈希值?
标签: ruby-on-rails ruby search elasticsearch rails-activerecord