Sql полнотекстовый поиск по ключевым словам - содержит или не содержит
Привет, меня попросили обновить раздел поиска по ключевым словам на нашем сайте. Это должно быть как на картинке.
Пользователь может выбрать один из двух вариантов в поле выбора, и это относится к моему полнотекстовому столбцу. Затем он вводит слово или слово и говорит добавить. Он идет к "содержит поле", и это означает, что результат поиска должен содержать это слово. Если пользователь перетаскивает его в другое окно, результаты поиска не должны содержать это слово / слова. Я сделал это каким-то образом. Но я беспокоюсь о производительности. Этот поиск происходит в среднем каждые 15 секунд, и в таблице содержится ~30 миллионов записей. Вот что я сделал:
INNER JOIN CONTAINSTABLE (FullTextDB,column1,'"software developer*"') ka on a.refnumber = ka.[key]
left JOIN CONTAINSTABLE (FullTextDB,column1,'"mvc*" ') ri on a.refnumber = ri.[key]
INNER JOIN CONTAINSTABLE (FullTextDB,column2,'"php*" ') yer on a.refnumber = yer.[key]
WHERE ri.[key] is null
Это приносит правильные результаты, но как я могу улучшить это. Я использовал левое соединение, чтобы исключить. Есть идеи? Спасибо.
1 ответ
Группировка ключевых слов поиска обеспечит повышение эффективности
пример
"(A OR B) AND NOT (C)"