2012-04-18 4 views
0

Возможно ли без использования полнотекстового индексирования мы можем искать огромную таблицу по ключевым словам?SQL Server ищет миллионы строк в таблице

Я хочу искать термин Country man working и возвращает следующие результаты:

  1. Страна человек начал работать
  2. Страна на грани провала
  3. Человек начал свою работу
+3

Почему вы не можете использовать полнотекстовое индексирование? Без него использование инструкции LIKE или CHARINDEX будет ужасно медленным для такой большой таблицы. –

ответ

0

Это должно вернуться требуемые результаты:

SELECT * 
FROM TABLE 
WHERE Field LIKE '%country%' 
OR Field LIKE '%man%' 
OR Field LIKE '%working%' 

Никаких гарантий по скорости, хотя ...


Записки из замечаний - это действительно не способ сделать это. Полнотекстовая индексация - это подход к использованию, но вы не уточнили, почему это не вариант.

+0

Поиск не так уж прост, этот запрос будет игнорировать все индексы. Нам нужна более высокая производительность. –

+3

Вы просили сделать это без полного текстового индекса. И вот, вот оно. Другой способ - создать полный текстовый индекс, который будет намного лучшим способом сделать это. – Paddy

+0

Но с выражением 'LIKE '% man%'' вы в основном выполняете полное сканирование таблицы, которое будет выглядеть ужасно медленным ** на столе с миллионами строк, так как никакие индексы не могут использоваться ** когда-либо ** .... –

1

Создать таблицу, содержащую все слова в словаре, минус шумовые слова.

Создать таблицу связать словарь таблицы ключевых слов в таблицу

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

Тогда вы можете найти немного как это:

SELECT T.TextStuff 
FROM KeywordTable AS K 
JOIN LinkTable AS L ON L.KeywordID = K.KeywordID 
JOIN TableToSearch AS T ON T.KeyWordID = L.KeywordID 
WHERE K.Keyword = 'Country' 
OR K.Keyword = 'man' 
OR K.Keyword = 'working' 

Thats только псевдо-код, но, надеюсь, это будет продемонстрировать идею. Время, затрачиваемое на установку, но должно быть лучшим исполнителем, чем создание группы LIKE.

Подводя итог, вы хотите посмотреть в таблице, где у вас есть одно слово в строке, то, которое вы хотите найти в таблице ссылок, и оттуда вы можете перейти к записи в исходной таблице.

Смежные вопросы