여기에서 유스 케이스에 대한 솔루션을 찾는 데 문제가 있습니다. 기본적으로 매우 간단합니다. SQL like '%...%'
처럼 "contains"쿼리를 수행해야합니다.Ngram Tokenizer on field, 쿼리가 아닌
정규식 쿼리가 있는데, 실제로 완벽하게 작동하지만, 규모가 심한 것처럼 보이기 때문에 nGrams를 사용해 보았습니다. 지금, 나는 그들과 함께 놀았고 "어떻게 작동하는지"알았지 만, 그 행동은 내가 기대하는 것이 아닙니다.
기본적으로 분석기는 mingram = 2, maxgram = 20으로 구성되었습니다. "Christophe"라는 사용자의 색인을 생성한다고 가정 해보십시오. 크리스가 5 그램의 크리스토프이기 때문에 쿼리 "크리스"가 실제로 일치하기를 원합니다. 문제는 "리조또"가 Ngrams로 분류되어 궁극적으로 "is"가 "Christophe"의 2-gram이기 때문에 일치합니다. 그래서 그것은 역시 일치합니다.
필자가 필요로하는 것은 분석기가 인덱싱 할 때 nGrams의 인덱싱 된 필드를 실제로 분석하여 FULL 텍스트 쿼리와 비교하는 것입니다. Risotto는 Risotto, XXXRisottoXXX 등과 일치해야하지만 Risolo가 아니거나 nGram이 일치하는 부분이 아닙니다.
해결책이 있습니까?
: http://stackoverflow.com/questions/41543223/elasticsearch-does-not-respect-max-ngram-length-while-using-ngram -tokenizer/41543664? noredirect = 1 # comment70303094_41543664 (검색 시간에 '표준'분석기를 설정할 필요가 있음을 알려드립니다.) – Val
감사합니다. Val! –