我在Elasticsearch::Model
模型上有ActiveRecord::Base
,看起来像这样
class ArtistGroup < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
FT_REDIS_KEY = "agft"
has_many :artists
settings index: { number_of_shards: 5 } do
mappings dynamic: 'false' do
indexes :normalized_name, analyzer: 'english'
indexes :name, analyzer: 'english'
end
end
def as_indexed_json(options={})
as_json(only: ['normalized_name', 'id', 'name'])
end
....
当我按.search('haim')
搜索时,我希望文档的名称为:&#34; Haim&#34;在其他人喜欢&#34; Haim&#34;的Danielle Haim之前先退回,如何通过最接近的匹配来控制ES查询得分?
答案 0 :(得分:0)
Elasticsearch默认返回按相关性排序的结果(即每个文档的得分)。
计算此分数的方式基于一组基本规则以及一些特定于查询的规则。
Elasticsearch中使用的标准相似度算法称为术语频率/逆文档频率,或TF / IDF,它考虑了以下因素:
单个查询可以将TF / IDF分数与其他因素结合起来,例如短语查询中的术语“邻近度”或模糊查询中的术语相似度。
有关相关性的完整说明,请参阅此处:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/sorting.html