MySQL自然语言搜索未返回预期结果的问题
我当前的查询:MySQL自然语言搜索未返回预期结果的问题,mysql,search,Mysql,Search,我当前的查询: SELECT SCHOOL_NAME, TOWN, POSTCODE, COUNTRY, COUNTY, id FROM schools WHERE MATCH(LA_NAME, SCHOOL_NAME, STREET, LOCALITY, ADDRESS3, TOWN, COUNTY) AGAINST ("southwark") AND COUNTRY = 'gb' limit 0,5; 正在返回(已删除一些数据以确保安全): 请注意,这些结果不包括Southwark小学 如
SELECT SCHOOL_NAME, TOWN, POSTCODE, COUNTRY, COUNTY, id FROM schools
WHERE MATCH(LA_NAME, SCHOOL_NAME, STREET, LOCALITY, ADDRESS3, TOWN, COUNTY)
AGAINST ("southwark") AND COUNTRY = 'gb' limit 0,5;
正在返回(已删除一些数据以确保安全):
请注意,这些结果不包括Southwark小学
如果我做这个查询
SELECT SCHOOL_NAME FROM schools WHERE `SCHOOL_NAME` LIKE '%southwark%' LIMIT 0 , 3
我的回复是
City of London Academy (Southwark)
Southwark Primary School
Southwark Park School
关键点:索斯沃克小学在这里的结果是可用的。这是自然语言搜索结果中缺少的内容
解释显示:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE schools fulltext LA_NAME LA_NAME 0 1 Using where
所以自然语言搜索由于某些原因表现得不如预期的好,我尝试过使用布尔模式,但不起作用。有人能解释一下我可能做错了什么吗
注意:如果我将第一次查询的限制更改为0,50,我仍然看不到Southwark小学
编辑:如果我将自然语言搜索更改为限制0240,我将得到结果#238
编辑#2
myisam_ftdump mydatabase/schools 1 -c | grep southwark
返回:
108 7.7915840 southwark
更新:看起来LA_NAME的值是Southwark,所以很多值都包含这个值。我使用Myisamftdump来隔离这个问题。我现在可以考虑解决问题了。
修复:所以为了修复这个问题,我不得不修改我的全文,不包括LA_姓名,我还删除了一些实际上不需要的数据,即邮政编码。我还修改了MySQL查询,不再使用我删除的字段。在自然语言搜索中也遇到了类似的挑战。您关于其包含在LA_名称中的评论,可在以下地址获得答复: 搜索结果为空,因为“MySQL”一词出现在 至少50%的行。因此,它被有效地视为 停止词
我不知道mysql上的自然语言搜索,但在sql server中,有一个与点击相关的权重。也许这个项目是由于类似的原因而在50年前完成的。看看它是否出现在lst中。那么为什么你认为它应该高于#238?因为其他结果根本不相关,所以我不知道它们出现的原因。
108 7.7915840 southwark