gpt4 book ai didi

php - 在 PHP 搜索引擎中处理简单语法

转载 作者:可可西里 更新时间:2023-11-01 07:12:47 25 4
gpt4 key购买 nike

我正在使用 MySQL 和 PHP 为我的网站创建一个简单的搜索功能。现在,如果在搜索栏中输入“猫”一词,我将无法检索到包含“猫”一词的文章,反之亦然。与结尾“ed”相同。

我能想到的解决这个问题的唯一方法是从每个长度超过一定长度的单词的末尾删除所有“s”和“ed”(以避免将“Ted”变成“T” , ETC)。然而,这个简单的解决方案远非完美。我希望有人能为我提供更好的解决方案。

最佳答案

您所指的技术称为词干提取。由于对语言的影响很大,因此很难在应用程序级别自行处理。如果你不想处理这个,你可以让 MySQL 为你做繁重的工作,这取决于你运行的 MySQL 版本。如果您使用的是 5.6.4 或更高版本,它内置于 MyISAM 表和 InnoDB 表的全文搜索机制中。在 5.5 到 5.6.3 版本中,它是为 MyISAM 而不是 InnoDB 表内置的。对于 5.1 版,有一个插件可从 mnoGoSearch 获得。 .在 5.1 之前,我认为您需要在应用程序级别处理它,但我尚未确认这一点。

这些链接可能会帮助您入门。

请注意停用词列表,这是一个非常常见且通常很短的词列表,在处理查询时会在搜索文本中忽略这些词。如果它阻止您获得预期结果,则有一些设置可以控制停用词列表。您可能希望将最小单词长度设置为 2 或 3(默认为 4)并删除默认列表中的许多单词。

如果您想自己或使用 PHP 处理词干提取,可以使用 a detailed technical discussion of the Porter Stemming Algorithm by Martin Porter并且至少有两个可用的 PHP 实现,an older one in PHP4 by Jon Abernathy可能有一些缺陷和a newer one in PHP5 by Richard Heyes .

我假设您主要关注英语,但我相信也有对其他语言的一些支持。

作为mentioned by rnmccall如果您需要更高级的搜索功能,您可能需要使用 Sphinx 或 Apache Lucene。

关于php - 在 PHP 搜索引擎中处理简单语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514824/

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