问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用MySQL,MSSQL做站内搜索引擎?

发布网友 发布时间:2022-05-07 11:36

我来回答

3个回答

懂视网 时间:2022-05-07 15:57

  MATCH (col1,col2,...) AGAINST (expr [IN BOOLEAN MODE | WITH QUERY EXPANSION])

  MySQL支持全文索引和搜索功能。MySQL中的全文索引类型FULLTEXT的索引。  FULLTEXT 索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或 CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。

  全文搜索同MATCH()函数一起执行。

mysql> CREATE TABLE articles (
  ->  id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
  ->  title VARCHAR(200),
  ->  body TEXT,
  ->  FULLTEXT (title,body)
  -> );
Query OK, 0 rows affected (0.00 sec)
 
mysql> INSERT INTO articles (title,body) VALUES
  -> ('MySQL Tutorial','DBMS stands for DataBase ...'),
  -> ('How To Use MySQL Well','After you went through a ...'),
  -> ('Optimizing MySQL','In this tutorial we will show ...'),
  -> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
  -> ('MySQL vs. YourSQL','In the following database comparison ...'),
  -> ('MySQL Security','When configured properly, MySQL ...');
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
 
mysql> SELECT * FROM articles
  -> WHERE MATCH (title,body) AGAINST ('database');
+----+-------------------+------------------------------------------+
| id | title       | body                   |
+----+-------------------+------------------------------------------+
| 5 | MySQL vs. YourSQL | In the following database comparison ... |
| 1 | MySQL Tutorial  | DBMS stands for DataBase ...       |
+----+-------------------+------------------------------------------+
2 rows in set (0.00 sec)

  MATCH()函数对于一个字符串执行资料库内的自然语言搜索。一个资料库就是1套1个或2个包含在FULLTEXT内的列。搜索字符串作为对AGAINST()的参数而被给定。对于表中的每一行, MATCH() 返回一个相关值,即, 搜索字符串和 MATCH()表中指定列中该行文字之间的一个相似性度量。

  在默认状态下, 搜索的执行方式为不区分大小写方式。然而,你可以通过对编入索引的列使用二进制排序方式执行区分大小写的全文搜索。 例如,可以向一个使用latin1字符集的列给定latin1_bin 的排序方式,对于全文搜索区分大小写。

  如上述所举例子,当MATCH()被用在一个 WHERE 语句中时,相关值是非负浮点数。零相关的意思是没有相似性。相关性的计算是基于该行中单词的数目, 该行中独特子的数目,资料库中单词的总数,以及包含特殊词的文件(行)数目。

  对于自然语言全文搜索,要求MATCH() 函数中命名的列和你的表中一些FULLTEXT索引中包含的列相同。对于前述问讯, 注意,MATCH()函数(题目及全文)中所命名的列和文章表的FULLTEXT索引中的列相同。若要分别搜索题目和全文,应该对每个列创建FULLTEXT索引。

  或者也可以运行布尔搜索或使用查询扩展进行搜索。

  上面的例子基本上展示了怎样使用返回行的相关性顺序渐弱的MATCH()函数。而下面的例子则展示了怎样明确地检索相关值。返回行的顺序是不定的,原因是  SELECT 语句不包含 WHERE或ORDER BY 子句:

mysql> SELECT id, MATCH (title,body) AGAINST ('Tutorial')
-> FROM articles;
+----+-----------------------------------------+
| id | MATCH (title,body) AGAINST ('Tutorial') |
+----+-----------------------------------------+
|  1 |                        0.65545833110809 |
|  2 |                                       0 |
|  3 |                        0.66266459226608 |
|  4 |                                       0 |
|  5 |                                       0 |
|  6 |                                       0 |
+----+-----------------------------------------+
6 rows in set (0.00 sec)

热心网友 时间:2022-05-07 13:05

搜索引擎跟用什么数据库关系还不是很大,主要是你要分析清楚搜索的范围有哪些,这样才能圈定到具体的表与字段。
由于站内搜索时,经常会要求对描述性文字进行全文查找,所以,你要先考虑当前数据库能否提供类似这样的功能。
一般是对很大长度的Text类型字段建全文索引,把标题、说明等字段作索引,以提高查询性能。
实在不行的话,借助第三方搜索引擎也可以实现站内搜索,比如Google,百度等

热心网友 时间:2022-05-07 14:23

mysql对汉字不直接支持全文索引,需要经过大量转换,最好用其他数据库
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
黑色芳纶哪家的好一些? 苏子叶我们中国叫什么苏子叶在中国叫什么 福州小车过户多少钱啊 福州车辆过户要多少钱 民生山西怎么查不到医疗保险信息 app查询养老金医疗保险方法介绍_百度... 太原医保查询平台(附入口二维码) 鉴定伤残等级去哪个部门 2024年中国铝业集团高管团队名单 2024中铝集团董事会成员一览 右枕位胎儿图怎么睡 一鸣楼宇对讲,刷卡开不了门,但分机能开,对讲能用,怎样维修? 宝宝小时候因精神发育迟滞住过院现在已经康复出院,而且现在很聪明影响给她买保险吗 小孩住过院还能买保险吗,需要注意些什么 面包机如何做切片面包 孩子原来住过院,现在买保险可以买吗 面包机烤出的面包怎么切才能不变形,切成"切片面包"那样? 自烤面包怎么切成块 面包机烤出来的面包怎么切 关于诗歌的基本特征: 如何理解诗歌风格特色和标准? 诗歌的主要特点是有哪三种性质 《梦溪笔谈》《天工开物》《农政全书》的区别? 天工开物的地位 明代宋应星的科学著作《天工开物》,提出了什么哲学思想? 《天工开物》是谁所著? 为什么《天工开物》被称为“中国17世纪工艺百科全书”? 天工开物是什么人著作的? 《天工开物》被誉为中国“17世纪工艺百科全书”,它是杰出的科学家宋应星撰写的,主要总结了清代农业和手工 外国学者是如何评价《天工开物》的? 天工开物在当时具有怎样的历史地位 《天工开物》被称为神书,书内描述了些什么? 哪种脱毛的办法更好? 永久脱毛方法哪种好 哪种脱毛方法更有效 那种脱毛方法比较好? 各种脱毛方法中什么脱毛方法好? 哪种方法脱毛效果会比较好? 顺丰快递单号9258 8457 4367查询 狮岭镇顺丰快递在哪儿? 2015年武汉欢乐谷万圣节期间夜场都有活动么? 区块链就是抄币骗钱吗?现在看到的区块链技术都是拉人头割韭菜 武汉欢乐谷万圣节夜场从五点到十点,晚上十点还有公交车回来吗? 如何用比较正规的语言表达割韭菜 如何煮鲫鱼汤不油腻? 想要鱼汤入口鲜甜回甘,究竟该怎么做呢? 怎么做鱼汤才不会油腻 病人鱼汤怎么做好喝又营养 天一文化的成人高考书籍好不好 成考天一教材靠谱吗 天一成考是个什么机构 地砖划痕怎么处理好?有哪些妙招