首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >MYSQL全文-意外结果

MYSQL全文-意外结果
EN

Stack Overflow用户
提问于 2013-03-22 06:42:22
回答 1查看 122关注 0票数 3

我有一个包含80,000行的数据库,当我测试一些全文查询时,我遇到了一个意外的结果。我已经从MYSQL中删除了停用词,并将最小单词长度设置为3。

当我执行此查询时:

代码语言:javascript
代码运行次数:0
运行
复制
SELECT `sentence`, MATCH (`sentence`) AGAINST ('CAN YOU FLY') AS `relevance`
FROM `sentences`
WHERE MATCH (`sentence`) AGAINST ('CAN YOU FLY')
ORDER BY `relevance` DESC

它给出这样的结果:

代码语言:javascript
代码运行次数:0
运行
复制
NO A FLY WITHOUT WINGS WOULD BE CALLED A WINGLESS | 10.623517036438
I CAN FLY                                         | 7.61278629302979
I CAN FLY :)                                      | 7.61278629302979
CAN YOU FLY?                                      | 7.61278629302979
THEY CAN FLY                                      | 7.61278629302979
YOU AM NOT FLY                                    | 7.61278629302979
CAN YOU FLY                                       | 7.61278629302979
HAVE YOU EVER SWALLOWED A FLY?                    | 7.52720737457275
I JUST WANNA FLY                                  | 7.52720737457275

为什么“没有翅膀的苍蝇会被称为没有翅膀的苍蝇”获得了最高的相关性,它只包含一个单词……还有,为什么"CAN YOU FLY“不在最上面,它是完全匹配的。

我希望它按最匹配的关键字排序,然后按排序最多的关键字排序,然后按最少的单词排序。这将给出逻辑结果:

代码语言:javascript
代码运行次数:0
运行
复制
CAN YOU FLY
CAN YOU FLY?
I CAN FLY
THEY CAN FLY
I CAN FLY :)
YOU AM NOT FLY
HAVE YOU EVER SWALLOWED A FLY?
I JUST WANNA FLY
NO A FLY WITHOUT WINGS WOULD BE CALLED A WINGLESS
EN

回答 1

Stack Overflow用户

发布于 2013-03-22 06:51:25

用于计算的公式在MySQL Internals Manual中提供

log w=(

(Dtf)+1)/sumdtf* U/(1+0.0115*U) * log((N-nf)/nf)

哪里

dtf是术语在文档中出现的次数sumdtf是同一文档中所有术语的(log(Dtf)+1)之和U是文档中唯一术语的数量N是文档总数nf是包含该术语的文档数量

第一个文本显然比其他文本有更多的内容。该公式在很大程度上依赖于U,即文档中唯一术语的数量。

根据您的评论,我建议使用Boolean Fulltext Search

代码语言:javascript
代码运行次数:0
运行
复制
SELECT `sentence`, MATCH (`sentence`) AGAINST ('CAN YOU FLY' IN BOOLEAN MODE) AS `relevance`
FROM `sentences`
WHERE MATCH (`sentence`) AGAINST ('CAN YOU FLY' IN BOOLEAN MODE)
ORDER BY `relevance` DESC
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15559568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档