如何在elasticsearch或lucene中增强基于索引类型的搜索?
我有三种食物类型指数“意大利”、“西班牙”、“美国”。如何在elasticsearch或lucene中增强基于索引类型的搜索?,lucene,elasticsearch,Lucene,elasticsearch,我有三种食物类型指数“意大利”、“西班牙”、“美国”。 当用户搜索“奶酪”时,来自“意大利语”的文档出现在顶部。如果我更喜欢说“西班牙语”,有可能“提高”结果吗?(我仍然应该得到意大利语的结果,但基于索引类型“西班牙语”的一些数字提升值,结果中返回的文档的顺序优先于“西班牙语”索引。这在用户输入lucene和/或ES查询中是可能的吗?如果是,如何?为字段或(或两者)添加具有提升的术语查询).对于查询时间提升,查询(例如)通常有一个可以设置的boost属性。或者,您可以将查询包装为。通常,我可能更
当用户搜索“奶酪”时,来自“意大利语”的文档出现在顶部。如果我更喜欢说“西班牙语”,有可能“提高”结果吗?(我仍然应该得到意大利语的结果,但基于索引类型“西班牙语”的一些数字提升值,结果中返回的文档的顺序优先于“西班牙语”索引。这在用户输入lucene和/或ES查询中是可能的吗?如果是,如何?为字段或(或两者)添加具有提升的术语查询).对于查询时间提升,查询(例如)通常有一个可以设置的
boost
属性。或者,您可以将查询包装为。通常,我可能更喜欢前者。使用脚本分数作为函数分数查询的一部分:
function_score: {
script_score: {
script: "doc['_type'].value == '<your _type>' ? _score * <boost_factor> : _score"
}
}
功能评分:{
分数:{
脚本:“文档[''类型'].值=''?\u分数*:\u分数”
}
}
如果同时查询多个索引,可以在传递给搜索API的对象的顶层指定索引:
curl -XGET localhost:9200/italian,spanish,american/_search -d '
{
"query":{"term":{"food_type":"cheese"}},
"indices_boost" : {
"ilalian" : 1.4,
"spanish" : 1.3,
"american" : 1.1
}
}'
目前正在使用字符串查询,是否可以将其与术语查询结合使用?将它们与boolDo结合使用无法在官方文档中找到任何增强类型的方法,您能给我一个示例或链接吗?我使用了
“脚本”:“doc[''''u-type']。value='35'?\u-score*2:\u-score”
,结果是查询失败[无法执行主查询]];nested:GroovyScriptExecutionException[MissingPropertyException[没有这样的属性:_typefor class:Script4]
Alexey,这需要ES 1.7吗?@Alexey Tigarev我如何使用java客户机实现这一点?有或没有它似乎都不会改变我的结果分数也许你在寻找索引提升?