如何在MySQL中获得更好的搜索结果文档格式.docx

上传人:b****3 文档编号:6498839 上传时间:2023-05-06 格式:DOCX 页数:5 大小:16.23KB
下载 相关 举报
如何在MySQL中获得更好的搜索结果文档格式.docx_第1页
第1页 / 共5页
如何在MySQL中获得更好的搜索结果文档格式.docx_第2页
第2页 / 共5页
如何在MySQL中获得更好的搜索结果文档格式.docx_第3页
第3页 / 共5页
如何在MySQL中获得更好的搜索结果文档格式.docx_第4页
第4页 / 共5页
如何在MySQL中获得更好的搜索结果文档格式.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

如何在MySQL中获得更好的搜索结果文档格式.docx

《如何在MySQL中获得更好的搜索结果文档格式.docx》由会员分享,可在线阅读,更多相关《如何在MySQL中获得更好的搜索结果文档格式.docx(5页珍藏版)》请在冰点文库上搜索。

如何在MySQL中获得更好的搜索结果文档格式.docx

从创建例子表格开始,使用以下的SQL命令:

mysql&

gt;

CREATETABLEreviews(idINT(5)PRIMARYKEYNOTNULL

AUTO_INCREMENT,dataTEXT);

以上命令创建了一个简单的音乐专集资料库(主要是整段的文字),然后向这个表格中添加一些记录:

INSERTINTO`reviews`(`id`,`data`)VALUES

(1,‘GingerboyhasanewsingleoutcalledThrowingRocks.

It\’sgreat!

’);

(2,‘Helloall,IreallylikethenewMadonnasingle

Oneofthehottesttrackscurrentlyplaying...I\’vebeen

listeningtoitallday’);

INSERTINTO`reviews`(`id`,`data`)

VALUES(3,‘HaveyouheardthenewbandHotterThanHell?

Theyhavefivemembersandtheyburntheirinstruments

whentheyplayinconcerts.

Theseguystotallyrock!

Like,awesome,dude!

验证数据的正确录入:

SELECT*FROMreviews;

+----+--------------------------------------------+

iddata

1Gingerboyhasanewsingleoutcalled...

2Helloall,IreallylikethenewMadon...

3HaveyouheardthenewbandHotterThan...

4rowsinset(0.00sec)

接下来,定义您要作为全文搜索索引的字段

ALTERTABLEreviewsADDFULLTEXTINDEX(data);

QueryOK,3rowsaffected(0.21sec)

Records:

3Duplicates:

0Warnings:

0

使用SHOWINDEXES命令来检查索引已经被添加了:

SHOWINDEXESFROMreviews;

TableColumn_namePackedNullIndex_typeCommentreviewsidNULLBTREEreviewsdataNULLYESFULLTEXT

当您拥有了数据和索引,就可以使用MySQL的全文搜索了,最简单的全文搜索方式是带有MATCH...AGAINST语句的SELECT查询,以下是一个简单的例子,可以来查找含有单词&

ldquo;

single&

rdquo;

的记录:

SELECTidFROMreviewsWHEREMATCH(data)AGAINST(‘single’);

+----+

id

1

2

2rowsinset(0.00sec)

在此,MATCH()将作为参数传递给它的字段中的文字与传递给AGAINST()的参数进行比较,如果有匹配的,那就按照正常的方式返回。

注意您可以传递不止一个字段用MATCH()来查看&

shy;

-只需用逗号来分割字段列表。

当MySQL收到了一个全文搜索的请求,它就在内部对每个记录进行评分,不匹配的记录得分为零,而&

更相关&

的记录会得到比&

不太相关&

的记录相对更高的分数。

相关性是由MySQL的一系列区分标准来决定的,查看MySQL的用户手册可以得到更多的信息。

想看到每个记录的评分如何,只需要返回MATCH()方法作为结果集的一部分,如下所示:

SELECTid,MATCH(data)AGAINST(‘rock’)FROMreviews;

idMATCH(data)AGAINST(‘rock’)102031.3862514533815

您还可以使用逻辑搜索修饰符来进行更精确的搜索,这通过在AGAINST语句中添加特殊的INBOOLEANMODE修饰符来实现,在以下的例子中,将查找含有单词&

但是没有&

Madonna&

SELECTidFROMreviewsWHEREMATCH(data)AGAINST(‘+single

-madonna’INBOOLEANMODE);

1rowinset(0.00sec)

这一搜索特性通常用于搜索单词片断(而不是完整的词语),这可以通过在INBOOLEANMODE语句中的*(星号)操作符来实现,以下的例子展示了如何查找单词中含有&

hot&

SELECTidFROMreviewsWHEREMATCH(data)AGAINST(‘hot*’INBOOLEANMODE);

3

您还可以使用这种方法来查找至少一个传递到AGAINST的参数中,以下的例子查找了至少包含单词&

hell&

和&

rocks&

中的一个的记录:

SELECTidFROMreviewsWHEREMATCH(data)AGAINST(‘hellrocks’INBOOLEANMODE);

3rowsinset(0.00sec)

以上的这些例子演示了相对于传统的SELECT...LIKE语句,进行全文搜索的更有效的方法,当您下一次需要编写MySQL数据库搜索界面的时候,您可以尝试这一方法。

以上就是精品学习网提供的关于在MySQL中获得更好的搜索结果的内容,希望对大家有所帮助。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2