我正在建立一个图书馆管理系统。 我在从mysql数据库中搜索一本书时遇到了问题。
为了在mysql中搜索数据,我们使用全文搜索。
但它只有在给出完整的单词时才有效。如果用户输入的是不完整的单词而不是实际的单词,是否有任何搜索功能。
例如:如果书名是微积分, 如果用户键入calc,那么书籍也应该出现
答案 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