Учитывая предопределенный набор фраз, я хотел бы выполнить поиск по запросу пользователя. Например, рассмотрим следующий набор фраз:
index phrase
-----------------------------------------
0 Stack Overflow
1 Math Overflow
2 Super User
3 Webmasters
4 Electrical Engineering
5 Programming Jokes
6 Programming Puzzles
7 Geographic Information Systems
Ожидаемое поведение:
query result
------------------------------------------------------------------------
s Stack Overflow, Super User, Geographic Information Systems
web Webmasters
over Stack Overflow, Math Overflow
super u Super User
user s Super User
e e Electrical Engineering
p Programming Jokes, Programming Puzzles
p p Programming Puzzles
Чтобы реализовать это поведение Я использовал trie. Каждый node в trie имеет массив индексов (пустой изначально).
Чтобы вставить фразу в trie, я сначала разбиваю ее на слова. Например, Programming Puzzles имеет index = 6. Поэтому я добавляю 6 ко всем следующим узлам:
p
pr
pro
prog
progr
progra
program
programm
programmi
programmin
programming
pu
puz
puzz
puzzl
puzzle
puzzles
Проблема заключается в том, что когда я ищу запрос prog p, я сначала получаю список индексов для prog, который [5, 6]. Затем я получаю список индексов для p, который также является [5, 6]. Наконец, я вычислил пересечение между ними и вернул результат [5, 6], что, очевидно, неверно (должно быть [6]).
Как вы это исправите?

