Езиков корен при търсене на текст използва алгоритъм, за да се опита да свърже думи, извлечени от обща база (напр. "бягане" трябва да съответства на "бягане"). Това е различно от съвпадението на префикса (напр. „синьо“ съответстващо на „боровинка“), което искате да приложите за функция за автоматично довършване.
За да използвате най-ефективно typeahead.js
с текстово търсене в MongoDB бих предложил да се съсредоточите върху prefetch
поддръжка при предварително изписване:
-
Създайте
keywords
колекция, която съдържа често срещаните думи (може би с честота на употреба), използвани във вашата колекция. Можете да създадете тази колекция, като изпълните Map/Reduce в цялата колекция, в която имате индекс за търсене на текст, и поддържайте списъка с думи актуален, като използвате периодичен Инкрементална карта/намаляване тъй като се добавят нови документи. -
Накарайте вашето приложение да генерира JSON документ от
keywords
колекция с уникалните ключови думи (може би ограничена до „популярни“ ключови думи въз основа на честотата на думата, за да поддържа списъка управляем/уместен).
След това можете да използвате генерираните ключови думи JSON за автоматично довършване от страна на клиента с prefetch
на typeahead функция:
$('.mysearch .typeahead').typeahead({
name: 'mysearch',
prefetch: '/data/keywords.json'
});
typeahead.js
ще кешира prefetch
JSON данни в localStorage за търсения от страна на клиента. Когато формулярът за търсене бъде изпратен, вашето приложение може да използва сървърната MongoDB търсене на текст
за да върнете пълните резултати в ред на уместност.