MySQL的问题自然语言搜索没有返回预期的结果

时间:2012-06-03 13:25:46

标签: 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 Park School       
The Cathedral School of St Saviour and St Mary Ove...   
Harris Academy Bermondsey   
Southwark Inclusive Learning Service KS3, KS4 & Si...   
St George's Cathedral Catholic Primary School

请注意,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

关键点:Southwark小学在这里的结果中可用。这是自然语言搜索结果中缺少的内容。

解释说明:

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小学。

编辑:如果我将自然语言搜索更改为限制0,240,我会得到结果#238。

编辑#2

myisam_ftdump mydatabase/schools 1 -c | grep southwark

返回:

108         7.7915840 southwark

更新:所以看起来LA_NAME的值为Southwark所以很多值包含了这个值。我使用myisam_ftdump来隔离这个问题。我现在可以考虑修复。

修正:所以为了解决这个问题,我必须修改我的全文,不要包含LA_NAME,我还删除了其他一些不需要IE邮政编码的数据。我还修改了我的MySQL查询,不再使用我删除的字段。

1 个答案:

答案 0 :(得分:0)

自然语言搜索遇到了类似的挑战。您关于它包含在LA_NAME中的评论可能会在12.9.1. Natural Language Full-Text Searches

得到解答
  

搜索结果为空,因为“MySQL”一词出现在   至少50%的行。因此,它被有效地视为一个   停用词。