简单的全文检索语句可以是:
 select * from tab where contains(text, 'abc')>0;但是如果我想检索含有空格的关键词呢?比如:“abc def” ,我要检索整个词怎么办?如果我要检索含有双引号或但引号的词呢? sql语句又怎么写?与或非复杂情况组合起来怎么写?在哪里能找到示例啊?高手赐教啊,谢谢谢谢~

解决方案 »

  1.   

    建立
    CREATE INDEX TABL1_text
              ON TABL1 ( C )
    INDEXTYPE IS ctxsys.CONTEXT;然后
    select * from TABL1 where contains(C,'AAA') > 0
      

  2.   

    1. 查询住址在北京的学生
    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'beijing' )
    re: beijing是一个单词,要用单引号括起来。2. 查询住址在河北省的学生
    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, '"HEIBEI province"' )
    re: HEBEI province是一个词组,在单引号里还要用双引号括起来。3. 查询住址在河北省或北京的学生
    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, '"HEIBEI province" OR beijing' )
    re: 可以指定逻辑操作符(包括 AND ,AND NOT,OR )。4. 查询有 '南京路' 字样的地址
    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'nanjing NEAR road' )
    re: 上面的查询将返回包含 'nanjing road','nanjing east road','nanjing west road' 等字样的地址。
              A NEAR B,就表示条件: A 靠近 B。5. 查询以 '湖' 开头的地址
    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, '"hu*"' )
    re: 上面的查询将返回包含 'hubei','hunan' 等字样的地址。
              记住是 *,不是 %。6. 类似加权的查询
    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
    re: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。7. 单词的多态查询
    SELECT student_id,student_name
    FROM students
    WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
    re: 查询将返回包含 'street','streets'等字样的地址。
             对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。