2014-09-24 61 views
0

我有一个存储文章标题的列表。 用户正在键入搜索词,例如“德国汽车测试”。 搜索是通过使用SQL和喜欢做的,它看起来像这样(基于PARAMS数)提高sql文本搜索结果的质量

Select * from articles where title like '%Germany%' or title like '%car%' or title like '%testing%'; 

这工作,但结果并不令用户满意,太多的返回结果,结果是不按匹配的单词数量排序(示例显示含有全部3个术语的第一个结果)。

在寻找避免beckend处理,但我会考虑它,如果它没有太多时间处理昂贵(使用Java和SQL - EntityManager的 - MySQL的)

有没有简单的方法来改善我的搜索质量? 我在表中有大约10.000条记录。

回答

0

我不是MySql专家,但您可能需要的是全文搜索功能。好消息是MySql支持这个功能。看到这个article或这个tutorial。要使用全文搜索,您必须在给定的一列或多列上创建全文索引。基于此索引的查询将比使用LIKE运算符更快。另一个优点是全文搜索查询返回从最相关的结果开始。这意味着你只能向用户显示这些可能对他有意思的行。