2015-05-27 2 views
0

Я полный текст индексируются имя столбца searchMetaSQL Server полнотекстовый поиск с использованием содержит. Последовательность текста Матч с одним символом

может содержать строки как

  • "Модуль А"
  • "Модуль B"
  • «Lorem Ipsum , Модуль А, еще несколько вещей здесь »
  • « Модуль R6, еще несколько вещей здесь »

    SELECT searchMeta from Metadata m where contains(m.SearchMeta, '"Module R6"') 
    

будет работать и возвращать последний ряд.

но делать

SELECT searchMeta from Metadata m where contains(m.SearchMeta, '"Module A"') 

вернет все строки, а не только те, с модулем A

Я думаю, это потому, что содержит процедуру только соответствует строкам, по крайней мере, два символа. Могу я что-то сделать?

+0

, если более важно иметь точный алгоритм, а не быстрый, тогда где m.SearchMeta LIKE «%» Модуль «%» может сделать трюк , вам могут понадобиться escape-символы, чтобы иметь возможность использовать кавычки, но –

+0

также вы можете попробовать содержит (m.SearchMeta, «Module A»), чтобы найти точную строку Module A, на самом деле я думаю, что это может просто найти что-нибудь со словом Module и отдельная буква А в ней –

+0

Не вариант, у меня есть миллионы записей. Использование «LIKE» займет значительно больше времени. – user838426

ответ

0

Я нашел решение. Я создал новый стоп-лист из стандартного списка Stop System и удалил «A», «B», «C», «R», которые были полезны в моем конкретном сценарии. Я обновил полный текстовый индекс, чтобы использовать этот пользовательский стоп-лист

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