1

我目前的查询:

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 Primary School

如果我做这个查询

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

编辑:如果我将自然语言搜索更改为限制 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 查询以不再使用我删除的字段。

4

1 回答 1

0

自然语言搜索遇到了类似的挑战。您关于它包含在 LA_NAME 中的评论可能会在 12.9.1 得到答复。自然语言全文搜索

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

于 2012-06-03T16:49:01.210 回答