SQL FullText搜索并突出显示结果

时间:2011-03-29 22:06:59

标签: jquery asp.net tsql sql-server-2008

我在SQL Server中有一个结构表:

 Students
(

  StudentId bigint,

  FullName nvarchar(100),

  DegreeId smallint, 

  Articel nvarchar(max)
)

我创建了一个全文索引并为“学生”表启用了它。

在我的asp.net页面中,用户输入单词并使用这些单词调用存储过滤器学生。

   Create Procedure GetStudents(@Article nvarchar(200)=typed words)

   AS
   BEGIN
         SET NOCOUNT ON
         SELECT StudentId,FullName,DegreeId,Article
         FROM Students 
         WHERE WHERE FREETEXT(Article,'''+ @Article+''')
   END

搜索工作正常,现在我需要在我的asp.net页面(通过jquery或asp.net)突出显示(黄色背景)返回的stuents的“文章”。

任何建议。

感谢StackOverFlow

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我认为您将很难获得完美的突出显示系统,因为SQL Server将匹配FREETEXT查询中的字词变体。如果你想要近乎完美,你可以自己做(或使用某人)stemming algorithm来生成单词变体。

如果你想尽最大努力,可以嵌入查询(在隐藏的输入字段中或作为查询字符串的哈希),然后像这样进行javascript搜索和替换:

$(document).ready(function() {
    // Set up words, either as a list you loop through or a JSON collection
    $("#resultsContainer").innerHTML.replace(word, "<span class='highlight'>" + word + "</span>");
});

你可以很容易地做这个服务器端,而不必担心jQuery拾取可能与查询单词匹配的页面元素。在这种情况下,您只需在服务器代码(VB或C#)上执行类似于javascript的搜索和替换。

答案 2 :(得分:0)

试试这可能会对你有帮助

highlight words