我当前的查询:
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查询,不再使用我删除的字段。
答案 0 :(得分:0)
自然语言搜索遇到了类似的挑战。您关于它包含在LA_NAME中的评论可能会在12.9.1. Natural Language Full-Text Searches:
得到解答搜索结果为空,因为“MySQL”一词出现在 至少50%的行。因此,它被有效地视为一个 停用词。