使用全文搜索来搜索mysql中的不完整单词

时间:2016-02-18 11:34:36

标签: mysql

我正在建立一个图书馆管理系统。 我在从mysql数据库中搜索一本书时遇到了问题。

为了在mysql中搜索数据,我们使用全文搜索。

但它只有在给出完整的单词时才有效。如果用户输入的是不完整的单词而不是实际的单词,是否有任何搜索功能。

例如:如果书名是微积分,      如果用户键入calc,那么书籍也应该出现

2 个答案:

答案 0 :(得分:1)

您可以尝试使用boolean mode进行全文搜索,这样可以添加一些额外的运算符。您将对截断运算符(*)感兴趣:

  

星号用作截断(或通配符)运算符。不像   其他运算符,它附加到受影响的单词。话   如果它们以*运算符之前的单词开头,则匹配。

     

如果使用截断运算符指定了单词,则不是   从布尔查询中剥离,即使它太短或停用词。   一个单词是否太短是由...决定的   InnoDB表的innodb_ft_min_token_size设置,或ft_min_word_len   对于MyISAM表。这些选项不适用于FULLTEXT   使用ngram解析器的索引。

     

通配字被视为必须出现的前缀   一个或多个单词的开头。如果最小字长为4,则a   搜索' + word + the *'可以返回比搜索更少的行   ' + word +',因为第二个查询忽略了太短的搜索   这个术语。

请注意,您不能开始使用*运算符的表达式,因此结果不能包含一本书,标题包含'计算',只有哪个标题开始与' calc'。

答案 1 :(得分:0)

您可以将LIKE运算符与“%”通配符

一起使用
With LIKE you can use the following two wildcard characters in the pattern:

% matches any number of characters, even zero characters.

例如

SELECT * FROM <Table> where book like "%calc%";

http://dev.mysql.com/doc/refman/5.7/en/string-comparison-functions.html