elasticsearch,n-gram,Search,elasticsearch,N Gram" /> elasticsearch,n-gram,Search,elasticsearch,N Gram" />

elasticsearch,ngrams应该覆盖整个查询?(复合词查询)

elasticsearch,ngrams应该覆盖整个查询?(复合词查询),search,elasticsearch,n-gram,Search,elasticsearch,N Gram,假设用户搜索“koreanpop” 当他真正的意思是“韩国流行音乐” 我不认为我可以建立一本字典来识别“韩语”和“流行语”作为单词。 我将使用nGram作为查询分析器。(这是一个可怕的想法吗?) 我想试试 "ko/reanpop" "kor/eanpop" "kore/anpop" "korea/npop" "korean/pop" "koreanp/op" 并查找带有“韩语/流行语”的文档。 (这将是边缘ngram,最小值=2) 这是一个可行的策略吗? (我知道韩国人不应该使用空格来分隔单词

假设用户搜索“koreanpop” 当他真正的意思是“韩国流行音乐”

我不认为我可以建立一本字典来识别“韩语”和“流行语”作为单词。
我将使用nGram作为查询分析器。(这是一个可怕的想法吗?)

我想试试

"ko/reanpop"
"kor/eanpop"
"kore/anpop"
"korea/npop"
"korean/pop"
"koreanp/op"
并查找带有“韩语/流行语”的文档。 (这将是边缘ngram,最小值=2)

  • 这是一个可行的策略吗? (我知道韩国人不应该使用空格来分隔单词,因为韩国人的搜索引擎支持空格)
  • 如何使用elasticsearch实现这一点

  • 你的具体用例是什么?您愿意接受多少遗漏的空格?您优先考虑哪一个:索引占用的空间还是查询速度?如果索引大小,那么您所建议的可能是您的最佳选择(不过,一个简单的实现将是指数型的,基于DP的东西可能会变成二次型的)。如果是速度,那么巧妙地使用木瓦标记过滤器可能会有所帮助?取决于具体规格。在索引时组合单词如何?例如,对于文档“korean pop hello world”,您可以将其索引为两个字段,一个使用普通分析器,一个使用两个单词组合:
    koreanpop
    pophello
    helloworld