当前位置: 首页 > 面试题库 >

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

颛孙哲
2023-03-14
问题内容

我正在创建一个允许用户提交报价的网站。如何创建返回最相关引号的(相对简单?)搜索?

例如,如果搜索词是“土耳其”,那么我将返回引号,其中单词“土耳其”出现两次,而引号则只出现一次。

(我会添加一些其他规则来帮助过滤掉不相关的结果,但是我主要担心的是。)


问题答案:

每个人都建议使用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 Occurrences
FROM
    posts AS p
GROUP BY
    p.id
ORDER 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全文很可能会导致您更改数据库架构。



 类似资料:
  • 问题内容: 我有一个带有一堆链接的网页。我想编写一个脚本,将所有链接中包含的所有数据转储到本地文件中。 有没有人用PHP做到这一点?一般准则和陷阱就可以作为答案。 问题答案: 这是受Tatu启发的DOM版本: 编辑: 我修复了Tatu版本的一些错误(现在可以使用相对URL)。 编辑: 我添加了新的功能,以防止它两次跟踪相同的URL。 编辑: 现在将输出回显到STDOUT,以便您可以将其重定向到所需

  • 本文向大家介绍使用Lucene.NET实现站内搜索,包括了使用Lucene.NET实现站内搜索的使用技巧和注意事项,需要的朋友参考一下 导入Lucene.NET 开发包 Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中

  • 本文向大家介绍简单实用的网站PHP缓存类实例,包括了简单实用的网站PHP缓存类实例的使用技巧和注意事项,需要的朋友参考一下 缓存技术在实际使用当中应用非常广泛,可以有效减轻对服务器数据库的访问压力,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。本文以一个简单实用的缓存类为例,帮助大家参考下缓存的机制与写法。 缓存文件cache.php代码如下: 缓存类的使用:

  • 本文向大家介绍php简单实现MVC,包括了php简单实现MVC的使用技巧和注意事项,需要的朋友参考一下 在PHP中使用MVC越来越流行了,特别是在一些开源的框架当中。MVC足以应对大多数的情况,但还有一些情况是其不太适合的,如比较简单的个人博客,对于只有几百篇文章量级的博客,使用MVC让人觉得有些太复杂了;同样对于新浪等门户网站,使用MVC,将有大量的文件被加载,对于速度的影响是无法接受的。枫竹梦

  • 本文向大家介绍PHP实现简单网站访客统计的方法实例,包括了PHP实现简单网站访客统计的方法实例的使用技巧和注意事项,需要的朋友参考一下 PHP网站访客统计 一、在网站根目录新建一个名为tongji.php的文件,然后写入以下代码 二、在需要显示的地方添加以下调用代码 三、说明 加入调用代码后打开网页,会在后台生成一个名为tongji.txt的记录文件,编辑此文件可以实现修改访问量,如需统计次目录下

  • 本文向大家介绍javascript实现简单搜索功能,包括了javascript实现简单搜索功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了javascript实现简单搜索功能的具体代码,供大家参考,具体内容如下 注意事项: A.search(B)可以在A中搜索B的位置,返回B出现的位置 A.split(B)将A以B划分为几部分,并返回数组,相当于分词操作 运行结果如下: 更多搜索