Mysql搜索,匹配单词如果相似

时间:2013-03-30 18:03:46

标签: mysql database full-text-search

我有一个带有名为sections的表的数据库。在这是一个名为head的字段,它有一个全文索引,每个条目有3个条目。 2个条目有摩托车这个词,有一个有摩托车。如果搜索“摩托车”一词,我似乎无法找到返回所有3的方法。

我试过了

SELECT * FROM sections
     WHERE MATCH (head) AGAINST ('Motorcycles')

但它只返回复数条目。我也试过了。

SELECT * FROM sections
   WHERE head like '%motorcycles%'

但这也只返回复数条目。有没有办法根据“摩托车”返回所有三行?

3 个答案:

答案 0 :(得分:1)

您是否尝试过布尔模式?

where match (head) against ('+ Motorcycle*' in Boolean mode)

更多信息是here

你的where子句有一个额外的“s”:

 SELECT * FROM sections WHERE head like '%motorcycle%'

答案 1 :(得分:0)

假设您的问题比您给出的特定motorcylce示例更通用...我不知道您可以直接在SQL中放松约束的方式(没有存储过程来预处理输入) 。我建议用正则表达式预处理输入,以删除/替换使单词复数的字符。然后按照你在单词的单数形式上显示的方式使用。

答案 2 :(得分:0)

如果我的问题正确,我认为你想要这样的事情:

if (SELECT count(1) FROM sections WHERE head like '%motorcycles%')>1
begin
    select * FROM selections
     WHERE head like '%motorcycle%'
end