Ron*_*rby 11 .net c# sql sql-server full-text-search
我已经构建了一个这样的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
...
)
Run Code Online (Sandbox Code Playgroud)
此搜索的GUI将是一个带有单个文本框的aspx页面,用户可以在其中进行搜索.
我计划以某种方式构建搜索词,就像上面的例子(@search).
不过我有些担忧:
我最近使用了全文搜索,因此我将尝试回答您的一些问题。
\n\n\xe2\x80\xa2 “我讨厌动态构建 sql,因为存在注入风险。我该如何防范这种情况?”
\n\n我使用了这样的清理方法:
\n\nstatic string SanitizeInput(string searchPhrase)\n {\n if (searchPhrase.Length > 200)\n searchPhrase = searchPhrase.Substring(0, 200);\n\n searchPhrase = searchPhrase.Replace(";", " ");\n searchPhrase = searchPhrase.Replace("\'", " ");\n searchPhrase = searchPhrase.Replace("--", " ");\n searchPhrase = searchPhrase.Replace("/*", " ");\n searchPhrase = searchPhrase.Replace("*/", " ");\n searchPhrase = searchPhrase.Replace("xp_", " ");\n\n return searchPhrase;\n }\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa2 我应该使用 FREETEXTTABLE 吗?有没有办法让 FREETEXT 查找所有单词而不是任何单词?
\n\n我确实使用了 FREETEXTTABLE,但我需要任何单词。正如我读过的那样(而且我读过很多),您必须使用 CONTAINSTABLE 来搜索所有单词或不同的组合。FREETEXTTABLE 似乎是一种更轻量级的解决方案,但当您需要更深入的自定义时,不适合选择。
\n| 归档时间: |
|
| 查看次数: |
2088 次 |
| 最近记录: |