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)"
Другие вопросы по тегам