我需要对一组单词进行模糊搜索(而不仅仅是单个术语) .

我的数据库表有很多字符串,包含一个或多个单词,我需要找到最适合搜索的单词组 .

E.G:

我搜索 "pommes de terre" ,它应该给 "pomme de terre" ,并且得分较低, "pomme""terre" 或任何可能的匹配术语 .

对于单个术语,它可以完美地工作,并纠正错字和重大错误 . 但是,如果我搜索多个术语,单个术语的分数要比完全匹配的分数和单词组要好:

搜索:“pomme de terre”

  • poire,得分:2.3862941

  • pomme,得分:2.2527628

  • pomme de terre ,得分:1.1263814 <- Not high enough

问题

有没有一个解决方案可以让更多的术语匹配更好的分数? (模糊术语匹配越多,分数越高)

设置

搜索查询:

{query: 
    {fuzzy_like_this: 
        { like_text: 'pomme de terre'}
    }
}

设置:

:analysis => {
    :analyzer => {
        :folding => {
            :tokenizer => "icu_tokenizer",
            :filter => [ "icu_folding"]
        }
    }
}

我是初学者,使用elasticsearch-rails . 我尝试使用建议查询,但它们不能用于rails gem .

我必须确切地说,这次搜索是我项目的重要组成部分......