mysql选择单词(复数,单数)

时间:2011-11-13 10:06:10

标签: mysql select word singular plural

在我的Mysql DB中,我有一个术语列表,如(首字母大写,大部分时间是复数)

Hairdressers
Restaurants
Beauty Salons 
Fournitures For Restaurants

在我的网站上,我有一个搜索栏,用户可以搜索这些词(我的网站是一种POI查找器)。但我的查询有问题。

SELECT * FROM TABLE WHERE word = 'userword'

1:如果用户进入餐馆,它就不起作用,因为他把'r'放在小写字母上。 2:如果用户进入餐厅要么是因为他没有把它变成复数

我尝试了SELECT * FROM TABLE WHERE word like 'userword'

这解决了Capital leters的问题,但是当用户以单数形式输入单词时,我不知道如何使查询起作用。是在DB中添加该单词的唯一解决方案吗?

谢谢

3 个答案:

答案 0 :(得分:2)

对于一个正则表达式来说,也可以更好地匹配复数名称测试,仅用于单词末尾的附加s:

SELECT * FROM table where word REGEXP '^userword[s]?'

请注意,默认情况下,MySQL中的正则表达式匹配不区分大小写。

答案 1 :(得分:1)

使用LIKE时,可以使用%来表示通配符

所以:

SELECT * FROM table where word like '%userword%'

匹配

userword, userwords, superuserwords, ...

但是如果你这样使用LIKE(注意额外的 s ):

SELECT * FROM table where word like '%userwords%'

匹配:

userword, superuserword, ...

答案 2 :(得分:1)

最好的解决方案是使用适当的搜索引擎,使用适当的分析器和词干分析器,以便向用户提供高质量的结果。这样的搜索引擎是lucene,如果您不想处理实施细节,可以使用Solr这是一个搜索服务器。