Я построил запрос T-SQL следующим образом:
DECLARE @search nvarchar(1000) = 'FORMSOF(INFLECTIONAL,hills) AND FORMSOF(INFLECTIONAL,print) AND FORMSOF(INFLECTIONAL,emergency)'
SELECT * FROM Tickets
WHERE ID IN (
-- unioned subqueries using CONTAINSTABLE
...
)
GUI для этого поиска будет страницей aspx с одним текстовым полем, в котором пользователь может выполнить поиск.
Я планирую каким-то образом построить термин поиска как пример выше (@search).
У меня есть некоторые проблемы, но:
- Является ли пример поисковым термином выше лучшего или единственного способа включить в себя перегибы всех слов в поиске?
- Я должен отделить слова и построить поисковый запрос в С# или T-SQL. Я склоняюсь к С# для принятия решений/циклов/строительства, но я хочу ваше мнение.
- Я ненавижу строить SQL динамически из-за риска инъекции. Как я могу защититься от этого?
- Следует ли вместо этого использовать FREETEXTTABLE? Есть ли способ заставить FREETEXT искать ВСЕ слова вместо ЛЮБОГО?
- В общем, как еще вы это сделаете?