gpt4 book ai didi

MySQL全文搜索单词的复数/单数形式

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

我有一张这样的 table

CREATE TABLE jobs(
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
) ENGINE=MyISAM;

还有这张表中的两条记录

...
7. 10 Senior PHP Developers (Leaders)
8. 30 PHP Developers..
...

还有两个查询:

  1. 返回上面的2条记录

    SELECT * FROM jobs WHERE MATCH (title,body) AGAINST ('developers')

  2. 返回空集

    SELECT * FROM jobs WHERE MATCH (title,body) AGAINST ('developer')

我以为MySQL可以用'developer'找到这些记录。但为什么它不起作用?

最佳答案

您可以使用 bool 运算符切换到全文:http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html

然后搜索:

SELECT * FROM jobs WHERE MATCH (title,body) AGAINST ('developer*' IN BOOLEAN MODE)

您将首先匹配“developer”,然后是“developers”或任何以“developer”开头的字符串。对于像“开发者”这样的长而精确的词来说没问题,但例如搜索“汽车*”可能会导致大量意想不到的结果,如“卡”、“ bean 蔻”......

我觉得MySQL全文搜索没有语法分析。实际上,我今天正在研究这个问题,但没有发现更好的方法。

编辑

此方法不适用于“party”(复数:“parties”)等词。如果您的搜索表单仅限于英语,我认为您可以使用一些简单的语法规则涵盖大多数情况,并且对于每个单词,搜索单词及其复数。如果它是错误的,它可能会导致无效的词,这在您的搜索中应该是中性的。

关于MySQL全文搜索单词的复数/单数形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893207/

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