【问题标题】:Boosting input fields for completion suggester提升完成建议的输入字段
【发布时间】:2013-12-03 04:08:05
【问题描述】:

我正在使用完成提示器进行自动完成。这些是我的文档

/* 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
           }
       }

    }       
}

但在这里我得到的输出为

  1. CineMAX:Inorbit Mall,Cyber​​abad,
  2. INOX:加尔各答

我想更加优先考虑精确匹配.. 所以我希望 INOX: Kolkata 在顶部..

我已经使用 phpexplode() 拆分了标题.. 所以我也可以匹配中间词..我不知道如何提升标题中的特定单词..请帮助我.. 提前致谢

【问题讨论】:

  • 该索引上设置了哪些映射和分析器?

标签: search full-text-search elasticsearch


【解决方案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”

【讨论】:

    【解决方案2】:

    您想要的是给具有最短标题的文档更多的权重。如果有两个文档与您的查询匹配,则标题最短的文档意味着信息较少,但仍能找到它,因此它必须具有更高的分数。

    你可以做的是在索引时,设置:

    weight = 1000 - number_of_characters_of_document_title (1000 or any other number : was just trying to have a positive weight)
    

    【讨论】:

      猜你喜欢
      • 2020-08-21
      • 2020-09-21
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 2023-04-06
      相关资源
      最近更新 更多