举例说明吧 2篇文章标题: 1,"手机系统 KJAVA"  2,"手机系统 MJAVA"建立全文索引后
用关键字JAVA是搜不出来这2条记录的我现在想法是从他的分词中获得所有含有JAVA的分词 比如我输入关键字JAVA后 就从所有分词中找到 KJAVA和MJAVA 然后返回给用户选择一个不知SQLServer全文索引的分词库保存在哪?

解决方案 »

  1.   


    全文索引一大限制是不能加前缀通配符。对于你的情况:
    --1.在语句中枚举
    select * from tb where contains (*, '"MJAVA" or "KJAVA"')
    --2.修改全文目录中的xml知识库文件(在 安装目录\Microsoft SQL Server\MSSQL.1\MSSQL\FTData下,根据语言的不同,xml文件也不同,如简体中文是tsCHS.xml),比如,把这些加进去:
    <expansion>
        <sub>JAVA</sub>
        <sub>MJAVA</sub>
        <sub>KJAVA</sub>
    </expansion>
    意思是,在用contains(*,formsof(THESAURUS))查的时候,只要指定了JAVA/MJAVA/KJAVA这三个中的任一个,就相当于三个一起查了。记得结贴哦
      

  2.   

    我打个比方而已 实际情况不可能不止KJAVA MJAVA 还有如果输入AVA 那不是都又要加? 我的意思是获取这个全文索引分词的列表 在后在这列表里用通配符搜出符号条件的 比如 AVA 在分词里就搜到了 KJAVA MJAVA 然后返回给用户选择一个更精确的 然后再使用全文索引搜索
      

  3.   

    你这个设想用SQL是无法实现的。既然用了全文索引,就不要用普通索引来想像它。全文索引的分词是在外部的DLL文件里,你如果修改的话,上MSDN查调用接口,然后用其它语言(如C++等)修改之后,重编译,最后让SQL重新调用。而且还不能修改原有的分词,只能自己增加。请记得结贴