您好,欢迎来到六九路网。
搜索
您的当前位置:首页网站全文索引

网站全文索引

来源:六九路网
首先要说,实现全文搜索一般都不用RDB,而是使用专用的搜索引擎。 搜索引擎同样也是一种数据库,

但是,索引的实现比较复杂,而且在每次更新数据的时候,都要更新索引, 所以,更新数据速度非常得慢,可以实现非常快的搜索速度。

搜索引擎有付费的也有免费并且开源的, 开源的搜索引擎用Apache Lucene得比较多

这里有PHP版的

http://framework.zend.com/manual/zh/zend.search.lucene.html Apache Luncene的子工程中有一个solr,

是一个源于CBNET的一个搜索引擎,可以支持大型网站。

如果非用Mysql,那就是自动生成like但是注意, %关键字%这种形势的关键字无法使用索引,

所以,搜索效率会非常的低。

在Mysql中还有另一种实现全文搜索的方法,也就是MATCH...AGAINST语句。 以下借花献佛,介绍一下。

MYSQL在使用like进行全文搜索效率比较低,尤其在处理大量数据的时候.

MySQL针对这一问题提供了一种基于内建的全文查找方式的解决方案。在此,开发者只需要简单地标记出需要全文查找的字段,然后使用特殊的 MySQL方法在那些字段运行搜索,这不仅仅提高了性能和效率(因为MySQL对这些字段做了索引来优化搜索),而且实现了更高质量的搜索,因为 MySQL使用自然语言来智能地对结果评级,以去掉不相关的项目.

1 建表语句

建立title和body为全文搜索索引

 CREATE TABLE `articles` (

 `id` int(10) unsigned NOT NULL auto_increment,  `title` varchar(200) default NULL,  `body` text,

 PRIMARY KEY (`id`),

 FULLTEXT KEY `title` (`title`,`body`)

 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 2 插入一些数据

 INSERT INTO `articles` (`id`, `title`, `body`) VALUES  (1, 'MySQL Tutorial', 'DBMS stands for DataBase ...'),

 (2, 'How To Use MySQL Efficiently', 'After you went through a ... stands'),  (3, 'Optimising MySQL', 'In this tutorial we will show ...'),  (4, '1001 MySQL Tricks', '1. Never run mysqld as root. 2. ...'),  (5, 'MySQL vs. YourSQL', 'In the following database comparison ...'),  (6, 'MySQL Security', 'When configured properly, MySQL ...'); 3 全文搜索

最简单的全文搜索方式是带有MATCH...AGAINST语句的SELECT查询

 SELECT *    

FROM `articles` WHERE MATCH ( body )

 AGAINST (  'MySQL'

 )

4 使用逻辑搜索修饰符(Boolean search modifiers) ++表示必须

+表示要有的-表示不能有的 不带+或者-表示,任意一种

 SELECT *  FROM articles  WHERE MATCH (  body

 )

 AGAINST (

 '+mysql +When'  IN BOOLEAN  MODE    

)

SELECT * FROM articles WHERE MATCH (

 body  )

 AGAINST (

 '+database -DBMS'  IN BOOLEAN  MODE  )

 SELECT *  FROM articles  WHERE MATCH (  body  )

 AGAINST (

 'database DBMS'  IN BOOLEAN  MODE

 )

注意搜索的字段长度最好大于5,否则可能找不到。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务