使用全文搜索
2014-04-25 10:24
302 查看
二、使用全文搜索
CONTAINS搜索方式 1.简单词搜索 - 搜索一个或多个特定的词或短语。词可以包括一个或多个字符,中间没有空格或标点。短语可以由空格分隔的多个词组成,但词之间可以有标点也可以没标点:--搜索文章内容含有张三或者李四的记录 SELECT * FROM Article WHERE CONTAINS(ArticleContent,'"张三" OR "李四"')2.前缀词搜索的方式 - 搜索指定文本开头的词或短语,前缀词的搜索方式主要是用在搜索英文中,例如搜索以“do”开头的单词,则可以将doctor、document、download等单词都搜索出来。
--搜索文章内容中含有以'认'开始的词的记录 SELECT * FROM Article WHERE CONTAINS(ArticleContent,'"认*"') --认为,认识3.加权词搜索的方式 - 给多个搜索条件加上权值,加权值越高的记录排在越前面,当以多个字符串作为搜索条件搜索记录时,可以为不同的字符串加上一个加权值,这个加权值是介于0和1之间的数值,加权值越高的记录排在越前面。事实上在该SELECT语句的返回结果集里,并没有按加权值的大小来排序,因为WEIGHT不影响CONTAINS查询的结果,只会影响CONTAINSTABLE查询中的排序:
--在CONTAINS搜索中,权重并不影响排序 SELECT * FROM Article WHERE CONTAINS(ArticleContent,'ISABOUT ("北京" weight(0.9),"上海" weight(0.6),"广州" weight(0.5))')4.邻近词搜索的方式 - 可以搜索与另一个词或短语相邻近的词或短语:
--搜索文章内容中第二个词在第一个词附近的记录 SELECT * FROM Article WHERE CONTAINS(ArticleContent,'"张三" NEAR "李四"')FREETEXT搜索方式 FREETEXT搜索方式与CONTAINS搜索方式相比,其搜索结果表现都十分不精确,因为FREETEXT的搜索方式是将一个句子中的每个单字拆分开进行搜索的。使用CONTAINS搜索方式搜索条件为“教育部”的记录,那么搜索出来的将是记录里包含“教育部”三个字符串的记录。
--搜索文章内容中包含'程'字和'社'字的记录 SELECT * FROM Article WHERE FREETEXT(ArticleContent,'程社')CONTAINSTABLE搜索方式 1、CONTAINSTABLE基本搜索:
--CONTAINSTABLE搜索文章内容中含有友谊的记录 SELECT * FROM CONTAINSTABLE(Article,ArticleContent,'友谊') as table1留意到返回中指包含了两个字段: 其实就是CONTAINSTABLE表中的数据。 2、CONTAINSTABLE返回所需列:
--CONTAINSTABLE搜索返回所需列 SELECT * FROM Article JOIN CONTAINSTABLE(Article,ArticleContent,'"环境"',2) as table1 ON Article.ArticleContent = table1.[KEY] ORDER BY table1.RANK DESC3、CONSTAINSTABLE按符合条件排序
--按符合条件排序 SELECT * FROM Article JOIN CONTAINSTABLE(Article,ArticleContent,' "泰国" NEAR "高铁" ',10) as table1 ON Article.ArticleContent = table1.[KEY] ORDER BY table1.RANK DESC看到查询结果的确按符合条件进行了排序: 4、CONSTAINSTABLE按按权值排序
--权重值排序 SELECT * FROM Article JOIN CONTAINSTABLE(Article,ArticleContent, 'ISABOUT ("泰国" weight(0.9), "高铁" weight(0.6), "环境" weight(0.1))') AS TABLE1 ON Article.ArticleContent = TABLE1.[KEY] ORDER BY TABLE1.RANK DESC结果按照权重值排序: 使用FREETEXTTABLE搜索 单个字搜索,但是多了参数可供使用:语法如下:
FREETEXTTABLE (table , { column_name | (column_list) | * } , 'freetext_string' [ ,LANGUAGE language_term ] [ ,top_n_by_rank ] )示例: 搜索image字段 在SQL Server 2005的image类型的字段里,不仅仅是可以存储图形文件,还可以存储如可执行文件、音乐文件、文本文件等众多文件类型。SQL Server 2005支持对存储在image类型的字段里的一些文件的内容进行全文搜索,但在创建全文索引时必须指明存储在image字段里的文件的类型。 SQL Server 2005支持对存储在image中的纯文本文件、网页文件、Word文件、Excel文件和PowerPoint文件的内容进行查询,其扩展名字段必须分别为txt、htm、doc、xls和ppt。全文索引创建完毕后,对image字段里的文件内容进行查询的方法与其他字段的查询方法是一样的:
SELECT 编号,标题,文件,扩展名 FROM 文章 WHERE CONTAINS(文件,'数据库')
SELECT * FROM [Content] T1 JOIN CONTAINSTABLE([Content], * , '(AA~ BB~ aa) OR (AA~ BB) OR (AA~ CC) OR (BB ~ aa) OR ISABOUT (AA weight(0.08), BB weight(0.06), CC weight(0.03), EE weight(0.01))' ) as T2 ON T1.id = T2.[KEY] ORDER BY T2.RANK DESC
CREATE FULLTEXT CATALOG [SearchArticle] WITH ACCENT_SENSITIVITY = ON --创建全文索引CREATE FULLTEXT INDEX ON Article( [title], [content])KEY INDEX [PK__Article__3213E83F1523E1F2] ON [SearchArticle] --IndexContent是唯一索引名
相关文章推荐
- 搜索学习--Solr全文搜索服务器的基本使用(二)——Spring Data Solr的使用
- 使用ElasticSearch6.0快速实现全文搜索功能的示例代码
- MkDocs全文搜索中使用模糊匹配
- SQLite中使用全文搜索FTS
- 使用 Docker 和 Elasticsearch 构建一个全文搜索应用程序
- 转贴:使用 Microsoft SQL Server 2000 的全文搜索功能构建 Web 搜索应用程序
- 使用全文搜索
- 全文搜索 lucene使用与优化
- 18 使用全文本搜索
- SQLite中使用全文搜索FTS
- [小技巧]使用Windows 7自带的索引服务搜索PDF全文
- 从零开始使用Hubbledotnet进行全文搜索-前言
- 全文搜索技术——Solr与solrj使用教程
- 如何使用ABAP Restful API进行代码的全文搜索
- Lucene全文搜索之分词器:使用IK Analyzer中文分词器(修改IK Analyzer源码使其支持lucene5.5.x)
- 使用postgreSQL+bamboo搭建比lucene方便N倍的全文搜索
- MySQL使用全文本搜索
- 使用 Microsoft SQL Server 2000 的全文搜索功能构建 Web 搜索应用程序
- 开源全文搜索工具包Lucene2.9.1的使用
- 使用lucene solr搭建Oracle数据库全文搜索服务