Like直接在数据据中查找可以查到所有所需记录但是会扫描整个表会影响性能CONTAINS是基于全文索引进行查询,查询结果受系统全文索引分词的方法影响查询结果会不全。
Select * FROM A Where CONTAINS(B,'"IT"Or"理论"')5257条记录
Select * FROM A Where B Like'%IT%' or B LIKE '%理论%' 5468条记录
结论:需要精确查询用Like如产品搜索,内容搜索可以用CONTAINS提高效率。

我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')。

我们通过例子来学习,假设有表 students,其中的 address 是全文本检索的列。
1. 查询住址在北京的学生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'beijing' )
remark: beijing是一个单词,要用单引号括起来。

2. 查询住址在河北省的学生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"HEIBEI province"' )
remark: HEBEI province是一个词组,在单引号里还要用双引号括起来。

3. 查询住址在河北省或北京的学生
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, '"HEIBEI province" OR beijing' )
remark: 可以指定逻辑操作符(包括 AND ,AND NOT,OR )。

4. 查询有 '南京路' 字样的地址
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'nanjing NEAR road' )
remark: 上面的查询将返回包含 '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*"' )
remark: 上面的查询将返回包含 'hubei','hunan' 等字样的地址。
记住是 *,不是 %。

6. 类似加权的查询
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'ISABOUT (city weight (.8), county wright (.4))' )
remark: ISABOUT 是这种查询的关键字,weight 指定了一个介于 0~1之间的数,类似系数(我的理解)。表示不同条件有不同的侧重。

7. 单词的多态查询
SELECT student_id,student_name
FROM students
WHERE CONTAINS( address, 'FORMSOF (INFLECTIONAL,street)' )
remark: 查询将返回包含 'street','streets'等字样的地址。
对于动词将返回它的不同的时态,如:dry,将返回 dry,dried,drying 等等。

以上例子都使用英文,不使用中文是因为有的查询方式中文不支持,而且我的计算机是英文系统。
全文索引——CONTAINS 语法
我们通常在 WHERE 子句中使用 CONTAINS ,就象这样:SELECT * FROM table_name WHERE CONTAINS(fullText_column,'search contents')。

如果你在选定字段中查询一个匹配的直接使用
如:
从company中检查是否有test1的则:
select * from company
where contains(*,'test1')
如果要检查的是两个关键字,如是或地关系:
select * from company
where contains(*,'"北京" or "tttt"')
注意:关键字“北京”和“tttt”必须用"",包括起来,or代表两个关键字之间是"或"的关系
如果是与的关系:
select * from company
where contains(*,'"北京" and "tttt"')
如果是三个关键字则:
关键字前的那个or或者and 表示跟其他关键字的关系
and 表示两个词是靠近的

最新文章

  1. 进击的Python【第十章】:Python的socket高级应用(多进程,协程与异步)
  2. MongoDB学习笔记~为IMongoRepository接口更新指定字段
  3. org.hibernate.AssertionFailure:collection[......] was not processed by flush()
  4. SDRAM的主要参数
  5. jQuery倒计时
  6. ubuntu下lamp配置
  7. angular.bind() 函数
  8. Xamarin学习资源收集
  9. [noip2010]关押罪犯 并查集
  10. ubuntu终端颜色配置
  11. WebChart网页局域网聊天系列(一):ActiveX插件编写
  12. ORTP库API使用入门
  13. MFC socket网络通讯核心代码
  14. css3弹性盒模型flex快速入门与上手1
  15. 【论文速读】Pan He_ICCV2017_Single Shot Text Detector With Regional Attention
  16. MySQL经典编程问题
  17. github 操作
  18. Appium新版本不再支持ByName定位了怎么办
  19. JSCS: Please specify path to 'JSCS' package
  20. stm-ledstrip : Driver and test routine for WS2811 RGB-LED

热门文章

  1. Android 做项目总结
  2. 《Cracking the Coding Interview》——第10章:可扩展性和存储空间限制——题目7
  3. 《Cracking the Coding Interview》——第9章:递归和动态规划——题目6
  4. 基于vue 2.X和高德地图的vue-amap组件获取经纬度
  5. Node rescue/unrescue相关代码流程图
  6. Heat 如何来实现和支持编排
  7. Python编码报错
  8. springmvc maven搭建二之springmvc的security
  9. H5单文件压缩插件
  10. Codeforces:Good Bye 2018(题解)