elasticsearch,Lucene,elasticsearch" /> elasticsearch,Lucene,elasticsearch" />

如何在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客户机实现这一点?有或没有它似乎都不会改变我的结果分数也许你在寻找索引提升?