如何使用PHP和MYSQL在搜索中省略“THE”
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用PHP和MYSQL在搜索中省略“THE”,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1999字,纯文字阅读大概需要3分钟。
内容图文
![如何使用PHP和MYSQL在搜索中省略“THE”](/upload/InfoBanner/zyjiaocheng/909/c1932cb1d837474abbe9e4fe8ddad511.jpg)
我正在为一个项目做一个“ALPHABETICAL ORDER SEARCH”模块.
那就是它的样子
A B C D E F. . . . . . . . . .. . . . . . .. . . ?
当我点击“A”时,结果应按“A”排序.对于所有字母表都是一样的.
现在我的问题如下:
>例如,有一部名为“木乃伊”的电影.
>我所做的就是当点击“ALPHABET T”这个相应的电影将被排序.
>但我的客户要求是当用户点击“M”而不是“T”时,“木乃伊”电影必须排序
>因为“a,an,the”是“ARTICLES”,它没有任何意义.
我希望现在每个人都能理解我的问题是什么……
任何帮助都会让人感激和感激.
提前致谢
解决方法:
假设您不希望修改表的内容(因此查询效率稍低),以下操作应该可以解决问题.
(如果您确实可以轻松修改表格,请参阅本答案末尾的建议)
SELECT Title
FROM myTable
WHERE (Title LIKE 'x%' OR Title LIKE 'THE x%')
-- AND Title NOT LIKE 'THE [^T]%'
ORDER BY Title
笔记:
– x表示所需的字母(例如:LIKE’A%’等)
– 只有当“X”是字母“T”时才需要“AND TITLE NOT LIKE”额外条件(它在功能上是多余的,但不会改变结果)
– 我不确定[^ xyz]的支持(即NOT字符x,y或z),所以[^ T]可以用它的正等效说法[A-RS-Z0-9]代替.
还有一些其他停顿词要考虑(“A”,“AN”,“OF”……)但对于书籍或电影片名,通常只考虑“THE”.如果您必须处理其他文章,则逻辑可以扩展为:
SELECT Title
FROM myTable
WHERE (Title LIKE 'x%'
OR Title LIKE 'THE x%'
OR Title LIKE 'A x%'
OR Title LIKE 'AN x%')
-- the following is only needed when "x" is either the letter T or A.
-- AND (Title NOT LIKE 'THE [^T]%'
-- AND Title NOT LIKE 'A [^A]%'
-- AND Title NOT LIKE 'AN [^A]%'
-- )
ORDER BY Title
如果您可以修改表格的内容,有更好的解决方案.其中一些暗示预先计算一个或多个额外的列(并在添加新记录等时保持它/这些).
>参见例如Cletus在本文中对“sort_column”方法的回答,其中额外列包含剥离任何不良前导噪声词的标题.除了作为OP的首字母搜索问题中的过滤字段的目的之外,该列还可以用于以更友好/合理的方式对由与首字母无关的过滤器产生的标题列表进行排序.和/或标题的开头(比如按年搜索).
>上面的一个变体是只存储“有效”的首字母(超过不需要的噪音),制作一个较小的列,但也是一个不太通用的.
>标题栏本身可以更新,存储标题的修改形式,其中无关的前导噪音词被移动到括号内的字符串的末尾.这种做法在书目类型目录中很常见.
内容总结
以上是互联网集市为您收集整理的如何使用PHP和MYSQL在搜索中省略“THE”全部内容,希望文章能够帮你解决如何使用PHP和MYSQL在搜索中省略“THE”所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。