我有一个数据库,大概有30万条记录,不算很多,但我查找资源都是用like '%keyword%' 来检索的,这样做不但速度慢而且CPU占用也很高,后来有朋友告诉我要建立全文检索,那么用like '%keyword%'速度就会提高 
我按照步骤建立全文检索后,不但搜索速度没提高,而且原来用like能找到50条数据的,现在只能找到两条了,不知道是怎么回事情,哪位高手能帮帮我吗? 我已经把我的数据库备份出来了 http://lelewap.cn/ring.rar 
麻烦高手们帮帮我,谢谢了我是用contains来查询的

解决方案 »

  1.   

    有两点问题:
    1.建完全文索引就不需要LIKE查询了,用类似这样的查询就行了,select [filed] from [table] where contains(filed,'keywords');
    2.全文检索是有切词的,有准确率的要求,所以不会有LIKE那么多的结果,比如,字段里包含了“数据”、“数据库”、“数据压缩”,则你用LIKE时会全部检索出来,而用contains(filed,'数据'),则后两个就不会出现。如果你需要的时模糊查询,就需要用AND、OR等构造。以下是contains谓词的语法,你可以参考以下:
    CONTAINS 
        ( { column | * } , '< contains_search_condition >'
        )
    < contains_search_condition > ::=
            { < simple_term >
            | < prefix_term >
            | < generation_term >
            | < proximity_term >
            | < weighted_term >
            }
            | { ( < contains_search_condition > )
            { AND | AND NOT | OR } < contains_search_condition > [ ...n ]
            }
    < simple_term > ::=
        word | " phrase "
    < prefix term > ::=
        { "word * " | "phrase * " }
    < generation_term > ::=
        FORMSOF ( INFLECTIONAL | THESAURUS , < simple_term > [ ,...n ] )
    < proximity_term > ::=
        { < simple_term > | < prefix_term > }
        { { NEAR | ~ } { < simple_term > | < prefix_term > } } [ ...n ]
    < weighted_term > ::=
        ISABOUT
            ( { {
                    < simple_term >
                    | < prefix_term >
                    | < generation_term >
                    | < proximity_term >
                    }
                [ WEIGHT ( weight_value ) ]
                } [ ,...n ]
            )
      

  2.   

    刚刚装的windows 64位系统数据不下了,应该是楼上兄弟说的,索引问题。
      

  3.   

    建立索引以前数据库是用字符检索
    建立以后就用单词检索
    简单说
    以前apple用app,ple,ppl都能检索出来
    但是用索引,因为apple是一个单词,在索引里是一个关键字,所以只有用apple才能检索出来
    检索的结果就自然便少了
      

  4.   

    全文索引和like是没有关系的,用全文索引查询需要使用contains()和ContainsTable()这两个函数之一来查询,具体用法可以在联机丛书中找到
      

  5.   

    我说过了,我没用like 我用的contains