c# – 关于SQL Server 2008全文搜索

前端之家收集整理的这篇文章主要介绍了c# – 关于SQL Server 2008全文搜索前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经建立了一个这样的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).

但我有一些担忧:

>示例搜索项是否在搜索中包含所有单词的最佳或唯一方法
>我应该分开单词并在C#或T-sql中构造搜索项.我倾向于倾向于C#进行决策/循环/构建,但是我想要你的意见.
>我讨厌建立sql,因为注入的风险.我该怎么防范这个?
>我应该用FREETEXTTABLE吗?有没有办法使FREETEXT寻找所有的单词而不是任何的?
一般来说,你还会怎么做?

解决方法

我最近使用全文搜索,所以我会尝试回答你的一些问题.

•“我讨厌由于注入风险而动态构建sql,我该如何防范?

我使用像这样的消毒方法

static string SanitizeInput(string searchPhrase)
    {
        if (searchPhrase.Length > 200)
            searchPhrase = searchPhrase.Substring(0,200);

        searchPhrase = searchPhrase.Replace(";"," ");
        searchPhrase = searchPhrase.Replace("'"," ");
        searchPhrase = searchPhrase.Replace("--"," ");
        searchPhrase = searchPhrase.Replace("/*"," ");
        searchPhrase = searchPhrase.Replace("*/"," ");
        searchPhrase = searchPhrase.Replace("xp_"," ");

        return searchPhrase;
    }

•我应该使用FREETEXTTABLE吗?有没有办法使FREETEXT寻找所有的单词而不是任何的?

我使用FREETEXTTABLE,但我需要任何一个字.就像我已经读过的一样(我已经读了很多),你必须使用CONTAINSTABLE来搜索所有的单词或不同的组合. FREETEXTTABLE似乎是更轻的解决方案,但是当您想要更深入的自定义时,它不是选择的.

原文链接:https://www.f2er.com/csharp/93591.html

猜你在找的C#相关文章