我使用完成建议器进行自动完成..这些是我的文件
/* doc 1 */
{
Title: CineMAX: Inorbit Mall, Cyberabad
Suggest: {
input: [
CineMAX:
Inorbit
Mall
Cyberabad
CineMAX: Inorbit Mall, Cyberabad
]
output: CineMAX: Inorbit Mall, Cyberabad
payload: {
....
}
weight: 1
}
}
/* doc 2 */
{
Title: INOX: Kolkata
Suggest: {
input: [
INOX:
Kolkata
INOX: Kolkata
]
output: INOX: Kolkata
payload: {
....
}
weight: 1
}
}
我正在使用完成查询,如下所示
{
"suggestion":{
"text":"inox",
"completion":{
"field":"Suggest",
"fuzzy":{
"edit_distance":1,
"transpositions":true,
"prefix_length":1,
"min_length":4
}
}
}
}
但是我在这里得到输出
我想更优先考虑完全匹配..所以我想要 INOX:加尔各答在顶部..
我已经使用php explode()拆分了标题..所以我也可以匹配中间的单词..我不知道如何提高标题中的特定单词..Plz帮助我.. 提前致谢
答案 0 :(得分:1)
您可以尝试运行两个完成查询,如下所示:
{
"text": "inox",
"suggestion_not_fuzzy": {
"completion": {
"field": "Suggest"
}
},
"suggestion_fuzzy": {
"completion": {
"field": "Suggest",
"fuzzy": {
"edit_distance": 1,
"transpositions": true,
"prefix_length": 1,
"min_length": 4
}
}
}
}
然后尝试从“suggestion_not_fuzzy”获取结果,如果空回退到“suggestion_fuzzy”
答案 1 :(得分:1)
您想要的是对标题最短的文档给予更多权重。如果两个文档与您的查询匹配,那么标题最短的文档意味着信息较少,仍然可以找到它,因此它必须具有更高的分数。
你可以做的是在索引时间,设置:
weight = 1000 - number_of_characters_of_document_title (1000 or any other number : was just trying to have a positive weight)