栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用php和mySQL实现简单的站点搜索?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用php和mySQL实现简单的站点搜索?

每个人都建议使用MySQL全文搜索,但是您应该注意一个巨大的警告。全文搜索引擎仅适用于MyISAM引擎(不适用于InnoDB,因其参照完整性和ACID兼容性,它是最常用的引擎)。

因此,您有几种选择:

1. 最简单的方法由“ 粒子树”概述。您可以从纯SQL中获得排名搜索(没有全文,没有任何内容)。下面的SQL查询将搜索一个表,并根据搜索字段中出现的字符串数对结果进行排名:

SELECt    SUM(((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'term', '')))/4) +        ((LENGTH(p.body) - LENGTH(REPLACE(p.body, 'search', '')))/6))    AS OccurrencesFROM    posts AS pGROUP BY    p.idORDER BY    Occurrences DESC

编辑了他们的示例以提供更多的清晰度

上面的SQL查询的变体,添加WHERe语句(WHERe p.body LIKE’%whatever%you%want’)等,可能会完全满足您的需求。

2. 您可以更改数据库架构以支持全文。无需安装Sphinx Fulltext Search
Engine
for
MySQL之类的插件来保持InnoDB引用完整性,ACID遵从性和速度的通常做法是将报价数据拆分到其自己的表中。基本上,您将有一个Quotes表,它是一个InnoDB表,而不是您的TEXT字段为“
data”,而是具有引用“
quote_data_id”,该引用指向Quote_Data表(即MyISAM表)上的ID。您可以在MyISAM表上使用全文本,将InnoDB表返回的ID合并在一起,然后就可以得到结果。

3. 安装Sphinx。祝你好运。

鉴于您的描述,我 强烈
建议您采用我介绍的第一种方法,因为您有一个简单的数据库驱动站点。第一种解决方案很简单,可以快速完成工作。Lucene将非常麻烦地进行设置,尤其是当您要将Lucene与数据库集成时,Lucene的主要目的是索引文件而不是数据库。Google自定义站点搜索只会使您的站点失去大量声誉(使您看起来很业余和被黑),而MySQL全文很可能会导致您更改数据库架构。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400709.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号