В настоящее время я работаю над проектом AppEngine и хотел бы реализовать автозаполнение поисковых терминов. элементы , которые можно искать, достаточно недвусмысленны и кратки, поэтому я подумал о том, чтобы реализовать их, предоставив каждому элементу список неполных типизаций. Так что foobar
получит список вроде [f, fo, foo, foob, fooba, foobar]
. Текст пользователя в окне поиска затем сравнивается с этим списком, и предлагаются положительные совпадения.
В этом списке есть несколько возможных оптимизаций, о которых я думал:
- Удаление пробелов из поисковых терминов.
Foo. Bar
до FooBar
.
- Удаление заглавных букв
- Удаление ведущих частиц, таких как «the», «a», «an».
The Guy
будет guy
и проиндексировано как [g, gu, guy]
.
- Только добавление подстроки длиннее 2 или 3 в список индексации. Так что
The Guy
будет проиндексировано как [gu, guy]
. Я думал, что предложения, которые соответствуют только первой букве, не будут такими актуальными.
Таким образом, пользовательский поисковый запрос также будет отформатирован, после чего производится поиск в БД. После предложения поискового термина частицы, знаки пунктуации и заглавные буквы будут добавляться в соответствии с полным именем предлагаемого объекта. Поэтому поиск «the» не дал бы никаких предложений, а поиск «The Gu ..» или «gu» предложил бы «The Guy».
Это хорошая идея? Главным образом: это форматирование поможет или только вызовет проблемы?