我如何匹配 MySQL 中单词的变体,例如搜索 accountancy 应匹配 accountant、accountants、accounting 等。我使用共享主机,因此无法向 MySQL 添加任何功能,例如 levenshtein。
我想要类似于谷歌匹配的方式'会计课程' and '会计课程'当搜索'时会计师课程'. Example https://www.google.com/search?q=accopunty%20course&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla%3aen-GB%3aunofficial&client=firefox-a&channel=fflb#hl=en&sugexp=les;.
我的服务器语言是 php,如果只能在那里实现而不是 SQL 的话。
目前的声明如下。
SELECT
pjs.title,
MATCH (pjs.title) AGAINST ('accountancy' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AS rel1,
MATCH (pjs.description) AGAINST ('accountancy' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AS rel2,
MATCH (
pjs.benefits,
pjs.experienceRequirements,
pjs.incentives,
pjs.qualifications,
pjs.responsibilities,
pjs.skills
) AGAINST ('accountancy' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) AS rel3
FROM
pxl_jobsearch AS pjs
ORDER BY (rel1 * 5) + (rel2 * 1.5) + (rel3) DESC;
MySQL 不太擅长全文搜索,您可能想使用其他引擎。我最喜欢的是斯芬克斯(http://sphinxsearch.com/ http://sphinxsearch.com/)但还有其他的。其中大多数支持开箱即用。
如果你有很大的表并且要使用词干,MySQL 的性能可能会很差。
如果你不能使用 Sphinx,请看一下这个 php 脚本http://tartarus.org/~martin/PorterStemmer/php.txt http://tartarus.org/~martin/PorterStemmer/php.txt
有了这个,您可以使用词干分析,并对词干词进行搜索。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)