Здание автозаполнения - PullRequest
       1

Здание автозаполнения

1 голос
/ 11 ноября 2010

Я строю самовнушение. На данный момент целевым приложением является настольное приложение, но идея состоит в том, чтобы создать его настолько сильным, насколько это возможно, а затем включить его в сеть.

Сейчас я нахожусь в самом начале проекта: думаю о базе данных (SQL Server 2008)

Автозаполнение будет происходить из таблицы ~ 40 000 000 строк.

Прямо сейчас мои варианты: полнотекстовый поиск или создание таблицы, как я опишу сейчас:

Мои автозапросы:

a b c
1 2 3
x y z

Полученная таблица:

a b c              a b c
a b c              a c b
a b c              b a c
a b c              b c a
a b c              c a b
a b c              c b a

И так для каждого предмета.

Теперь мой вопрос:

Что из этого лучше, когда я пытаюсь свести к минимуму поиск элементов для списка автозаполнения? Есть ли что-нибудь еще лучше?

Спасибо!

Diego

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

По моему мнению, FULLTEXT будет лучше, даже если вам нужны только точные совпадения.

Однако, даже если вы решите не использовать FULLTEXT, зачем вам индексировать все перестановки?Вы можете проиндексировать их один раз в алфавитном порядке (a, b, c) и просто переставить элементы в том же порядке, прежде чем предоставлять их в качестве параметра для запроса.

То есть вы всегда должны искать C, D, O, даже еслизапрос говорит O, C, D

0 голосов
/ 11 ноября 2010

Итак ... вы хотите запросить таблицу с 40 миллионами записей на основе частичного ввода, совпадающего с любой частью столбца (или даже с несколькими столбцами), возможно, от многих пользователей одновременно ... и я предполагаю, что выожидая времени отклика менее секунды

Ваш сервер БД лучше быть настоящим зверем.

Я бы настоятельно рекомендовал переосмыслить ваш план или, по крайней мере, ограничить выбор пользователей, например, ограничить поиск только началом столбца и т. Д.
Но если вы решите продолжить,о полном тексте не может быть и речи, если вы не включите в свое приложение какой-нибудь забавный курсор ожидания, чтобы развлекать пользователей во время выполнения запроса на автозаполнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...