如何在php mysql中搜索单数/复数

时间:2014-06-27 11:04:10

标签: php mysql

当我输入单词(ex:freshers)时,我想要更新鲜和更新的记录,目前我只获得新手记录。我的代码是这样的:

$search='freshers';
$qry=mysql_query("select count(*) from jobs where job_title like '%$search%' or MATCH(job_title)
AGAINST('$search' IN BOOLEAN MODE)");

当搜索字词新手时,我的数字为1200.当搜索字词更新鲜时,我的数字再次计为2000.

当我进入新鲜或新鲜时,如何得到几乎相同的数量。

2 个答案:

答案 0 :(得分:0)

您无法从任何MySQL技术获得与单数或复数搜索项完全相同的匹配记录数。

MySQL没有聪明才知道freshersfresher的复数形式,或childrenchild的复数形式。如果您想使用MySQL执行此操作,则必须使用您想要复数形式的单词形式开始搜索。

MySQL也不知道micemouse的复数形式。

如果您需要自动复数/单数功能,您可能需要调查Lucene或其他一些自然语言搜索技术。您寻求的能力的名称是“阻止。”

但是你可以使用带有尾随星号的术语进行FULLTEXT搜索。例如,'fresher*'匹配fresherfreshers,甚至fresherola。这将把搜索从单数扩展到复数。它反过来不会起作用。它

select count(*) 
  from jobs
 where MATCH(job_title) AGAINST('fresher*' IN BOOLEAN MODE)

布尔模式搜索术语还有一些其他修改字符。他们在这里提到:

http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

专业提示:column LIKE '%searchterm%'可能是MySQL提供搜索专栏的最慢方式。保证扫描整个表格。

专业提示:FULLTEXT搜索本质上有点模糊。期待从中获得清晰的记录可能是一条混乱的道路。

答案 1 :(得分:-1)

try this
$search='fresher';
$qry=mysql_query("select count(*) from jobs where job_title like '$search%'