2011-04-30 70 views
0

我想将搜索添加到我的网站。我有一个来自视频游戏挑战的数据库。每个挑战都有一个标题和说明,我希望能够至少搜索说明,但如果可能的话都可以。现在,我已经设置了表格,以便我可以使用MATCH()AGAINST(),但我遇到的问题可能是单数或复数。MySQL MATCH-AGAINST复数单词?

例如,“助手”一词出现在多项挑战中,但如果用户键入“助手”,他将不会得到任何东西。有什么方法可以添加该功能吗?我尝试了所有我能想到的,但迄今为止没有任何工作。

更新:我只是最近才了解到MATCH AGAINST,所以我不确定在我的情况下使用它的“正确”方式。就像我说的,我有一个叫做description列的表,用上面的例子字,assists,其中多次出现在餐桌上,我会用这个查询:

SELECT * FROM challenges WHERE MATCH(description) AGAINST('assists') 

我只是执行的它返回了10行。如果我将其更改为assist,我什么也得不到。

+0

你使用什么样的MATCH AGAINST?自然语言? – 2011-04-30 14:48:39

+0

我在帖子中添加了更多信息。 – HaLo2FrEeEk 2011-05-01 14:39:37

回答

0

也许你可以使用MySQL的SOUNDEX()函数。

SELECT 
    id, 
    title 
FROM products AS p 
WHERE p.title SOUNDS LIKE 'Shaw' 

// This wil match 'Saw' etc. 

我想这也可能适用于你,他会带着复数

+0

我试着用这个查询:''SELECT * FROM挑战where where description SOUNDS like'assist''' and nothing nothing,I change it to''assists'' and still nothing nothing。 – HaLo2FrEeEk 2011-05-01 14:41:04

+0

我为你检查了它,正常的'assist'和'assists'有Soundex。所以他们应该查询查询。你可以在这个网站上检查你的Soundex:http://www.searchforancestors.com/soundex.html – 2011-05-02 18:24:22

+0

好吧,但我告诉你,我运行了我在之前的评论中列出的查询。对于“助攻”和“助攻”这两个字我都得到了0分。 – HaLo2FrEeEk 2011-05-03 17:47:43

0

我可能会丢失的你想要做什么的地步,但为什么不只是做一个LIKE匹配像这样:

SELECT * FROM challenges WHERE description LIKE "%assist%"; 

这将匹配任何包含“帮助”以及“助攻”的内容。当然,它也将匹配“助理”和“援助”,这可能不是你想要的...

+0

是的,这不是我正在寻找的东西。就像你说的那样,它会匹配任何也包含搜索词的单词,就像我搜索“阅读”一样,它会返回“线索”,“面包”等。 – HaLo2FrEeEk 2011-05-02 15:15:28