gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-29 00:02:05 24 4
gpt4 key购买 nike

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

例如,如果搜索词是“火鸡”,那么我会在“火鸡”一词出现两次的引号之前返回它只出现一次的引号。

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

最佳答案

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

所以你有几个选择:

1. Particle Tree 概述了最简单的方法.您实际上可以从纯 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.您可以更改数据库架构以支持全文。通常会采取哪些措施来保持 InnoDB 引用完整性、ACID 合规性和速度,而无需安装像 Sphinx Fulltext Search Engine 这样的插件。 MySQL 是将报价数据拆分到自己的表中。基本上你会有一个表 Quotes 是一个 InnoDB 表,而不是你的 TEXT 字段“数据”你有一个引用“quote_data_id”,它指向一个 MyISAM 表的 Quote_Data 表上的 ID。您可以在 MyISAM 表上执行全文,将返回的 ID 与您的 InnoDB 表连接起来,瞧,您就有了结果。

3.安装Sphinx .祝你好运。

鉴于您的描述,我会强烈建议您采用我提出的第一种方法,因为您有一个简单的数据库驱动网站。第一个解决方案很简单,可以快速完成工作。 Lucene 设置起来很麻烦,特别是如果您想将它与数据库集成,因为 Lucene 主要用于索引文件而不是数据库。 Google 自定义网站搜索只会让您的网站失去大量声誉(让您看起来很业余和被黑),而 MySQL 全文很可能会导致您更改数据库架构。

关于php - 我将如何使用 php 和 mySQL 实现简单的站点搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/386914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com