我正在制作一个图书馆管理系统。
我在从 mysql 数据库搜索书籍时遇到问题。
为了在 mysql 中搜索数据,我们使用全文搜索。
但只有给出完整的单词时它才有效。如果用户输入不完整的单词而不是实际单词,是否有任何功能可以搜索。
例如:如果书名是微积分,
如果用户输入 calc ,那么书籍也应该出现
您可以尝试使用全文搜索布尔模式 http://dev.mysql.com/doc/refman/5.7/en/fulltext-boolean.html,这允许一些额外的运算符。您将对截断运算符感兴趣(*
):
星号用作截断(或通配符)运算符。不像
对于其他运算符,它附加到受影响的单词后。字
如果它们以 * 运算符前面的单词开头,则匹配。
如果用截断运算符指定一个单词,则它不是
从布尔查询中剥离,即使它太短或者是一个停用词。
判断一个词是否太短
InnoDB 表的 innodb_ft_min_token_size 设置,或 ft_min_word_len
对于 MyISAM 表。这些选项不适用于全文
使用 ngram 解析器的索引。
通配符单词被视为必须出现在的前缀
一个或多个单词的开头。如果最小字长为 4,则
搜索“+word +the*”可能会比搜索返回更少的行
'+word +the',因为第二个查询忽略了太短的搜索
术语.
请注意,您不能start一个表达式*
运算符,因此结果不能包含书名contains'calc',仅限哪个标题starts与“计算”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)