Вариант 1: разбить строку входного запроса на две части в разных точках и найти их. например. В этом случае запрос будет (+ fo + bar) ИЛИ (+ foo + bar) ИЛИ (+ foob + ar) Проблема в том, что этот токенизация предполагает наличие двух токенов во входной строке запроса. Кроме того, вы можете получить дополнительные, возможно, не относящиеся к делу результаты, такие как (+ foob + ar)
Вариант 2. Использование индексации в n-граммах при индексации и запросах. При индексировании токенов для «foo bar» будет fo, oo, ba, ar. При поиске с помощью foobar токенами будут fo, oo, ob, ba, ar. Поиск с оператором OR в качестве оператора даст вам документы с максимальным n-граммовым соответствием вверху. Это можно сделать с помощью NGramTokenizer