你所说的包括:全文检索、取动态摘要(按检索词)以及检索结果的反显三方面的问题。
对于第一个全文检索说简单使用sqlserver也能实现,说复杂卖到几十万的全文检索系统也有。
对于去动态摘要一般的做法是取得整篇文章,然后再文章中完全匹配检索词,再把这个检索词前后N个字节的内容显示出来。
对于反显,取动态摘要的时候完全匹配到检索词后在该词的前后加上html标记,如:<b>检索词</b>就可以实现了。

解决方案 »

  1.   

    全文索引会有问题的!请看完我这段文字。我经过一个晚上的测试,先用northwind数据库中的products表来测试。在这个表上建立的全问索引。索引的列名为:ProductName ,Qutityname,这两个都是字符类型的。然后我select * from products where FREETEXT(*,'Tofu').就是寻找出现单词:Tofu的记录
    结果有几个记录被查找出来了,但我改为Tof,则没记录查到。我个人的结论是:全文索引只能匹配单词短语。我看到的ASP.net以及SQL上的例子,都是用完整的单词在演示给读者看,全文索引的效果,不能查单个字母。这是第一个问题。第二个问题,假设我有一个自己的数据表,建立了个全文索引,在字符类型的列上建立索引。但我给他填充的值是“你好 谢谢 再见”。按照我刚才测试northwind的结论,我用“谢谢”应该能查出来,但结论是查不出来。我打个“谢”,也才查不出来。有时候还有错误的。所以,我怀疑是不是SQL只能查英文单词,不能匹配字母,也就是说它不像select 的like那样可以前后匹配任意字符。另外一个方面,全文索引的更新是非常消耗资源的!每次填充索引都要消耗一定的资源!以上是我对使用全文索引的一些想法。请参考!
    我所得出的一些结论也只是我机器上的调试结果,我不知道别人的怎么样!谢谢
      

  2.   

    用“替换”命令:格式:Edit.Replace findwhat replacewith注释:
    Edit 是你要替换的控件上的文本的ID。如:Label
    findwhat 是你要替换的文本
    replacewith 替换后的文本,如把 aaa 替换成 "<font color='#000000'>aaa</font>"
      

  3.   

    用模式匹配
    ms-help://MS.MSDNQTR.2003FEB.2052/vblr7/html/vaoprLike.htm
    我用的是(vs2003
    比较两个字符串。
    result = string Like pattern
    各部分说明
    result 
    必选项。任何 Boolean 变量。结果是 Boolean 值,它表示 string 是否匹配 pattern。 
    string 
    必选项。任何 String 表达式。 
    pattern 
    必选项。任何符合“备注”中描述的模式匹配约定的 String 表达式。 
    备注
    如果 string 匹配 pattern,则 result 为 True;如果不匹配,则 result 为 False。如果 string 和 pattern 都是空字符串,则结果是 True。否则,如果 string 或 pattern 中有一个为空字符串,则结果为 False。
    Like 运算符的行为取决于 Option Compare 语句。每个模块的默认字符串比较方法是 Option Compare Binary。
    内置的模式匹配为字符串比较提供了一种多功能工具。模式匹配功能允许您使用通配符、字符列表或字符范围的任何组合来匹配字符串。下表显示 pattern 中允许的字符和这些字符的匹配项:
    pattern 中的字符string 中的匹配项
    ?任何单个字符
    *零或更多字符
    #任何单个数字(0 到 9)
    [charlist]charlist 中的任何单个字符
    [!charlist]不在 charlist 中的任何单个字符括在方括号 ([ ]) 内的一个或多个字符的组 (charlist) 可以用于匹配 string 中的任何单个字符,并且可以包含几乎任何字符代码(包括数字)。
    注意   若要匹配特殊字符,如左方括号 ([)、问号 (?)、数字符号 (#) 和星号 (*),请将它们括在方括号中。不能在组中使用右方括号 (]) 来匹配它自己,但可以在组外作为单个字符使用。
    通过使用连字符 (–) 将范围的上下限分开,charlist 可以指定字符的范围。例如,如果 string 中的相应字符位置包含范围 A–Z 中的任何大写字母,则 [A-Z] 将产生匹配。可以在方括号中包括多个范围而不用分隔符。
    指定范围的含义取决于在运行时有效的字符排序(由 Option Compare 和运行代码的系统的区域设置确定)。当使用 Option Compare Binary 时,范围 [A–E] 匹配 A、B、C、D 和 E。当使用 Option Compare Text 时,[A–E] 匹配 A、a、&Agrave;、à、B、b、C、c、D、d、E 和 e。该范围不匹配 &Ecirc; 或 ê,因为在排序顺序中,重音字符排在非重音字符之后。
    模式匹配的其他重要规则包括: 
    charlist 开始处的感叹号 (!) 意味着仅当在 string 中找到除 charlist 以外的任何字符时才发生匹配。当在方括号外使用时,感叹号匹配它自己。 
    连字符 (-) 可以出现在 charlist 的开始处(如果有感叹号,则在它后面)或结尾处以匹配它自己。在任何其他位置,连字符标识由连字符两侧的字符界定的字符范围。 
    在指定字符范围时,这些字符必须以升序排序顺序出现(即,从最低到最高)。因此,[A-Z] 是有效的模式,但 [Z-A] 不是。 
    字符序列 [] 被视为零长度字符串 ("")。 
    在某些语言中,字母表中有一些表示两种不同字符的特殊字符。例如,有几种语言使用字符 &aelig; 来表示字符 a 和 e(当这两个字符一起出现时)。Like 运算符认为该单个特殊字符与这两个字符是等效的。
    当在系统区域设置中指定使用特殊字符的语言时,在 pattern 或 string 中出现的单个特殊字符都匹配其他字符串中等效的双字符序列。与此类似,括在方括号内的 pattern 中的单个特殊字符(独立存在、在列表中或在某个范围内)匹配 string 中等效的双字符序列。
    示例
    本示例使用 Like 运算符将字符串与模式比较。结果是 Boolean 值,它表示该字符串是否符合该模式。
    Dim myCheck As Boolean
    myCheck = "F" Like "F"   ' Does "F" match "F"? Returns True.
    myCheck = "F" Like "f"   ' Does "F" match "f"? Returns False.
    myCheck = "F" Like "FFF"   ' Does "F" match "FFF"? Returns False.
    myCheck = "aBBBa" Like "a*a"   ' Does "aBBBa" have a "a" at the 
       ' beginning, an "a" at the end, and any number of characters in 
       ' between? Returns True.
    myCheck = "F" Like "[A-Z]"   ' Does "F" occur in the set of
       ' characters from A to Z? Returns True.
    myCheck = "F" Like "[!A-Z]"     ' Does "F" NOT occur in the set of
       ' characters from A to Z? Returns False.
    myCheck = "a2a" Like "a#a"     ' Does "a2a" begin and end with an
       ' "a" and have any single-digit number inbetween? Returns True.
    myCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Does "aM5b" fit the following 
       ' pattern: Begins with "a", has and character from the set L through
       ' P, followed byb any single-digit number, and finally contains any
       ' character excluded from the character set c through e. Returns True.
    myCheck = "BAT123khg" Like "B?T*"  ' Does "BAT123khg" fit the 
       ' following pattern: Begins with "B", followed by any single
       ' character, followed by a "T" and finally zero or more characters
       ' of any type. Returns True.
    myCheck = "CAT123khg" Like "B?T*"  ' Does "CAT123khg" fit the 
       ' following pattern: Begins with "B", followed by any single
       ' character, followed by a "T" and finally zero or more characters
       ' of any type. Returns False.
    )