我做了一个PHP MYSQL FULLTEXT搜索,但是如何进行精确搜索?当我使用以下代码时,我需要返回必须包含单词'new'和'york'的数据,em ...实际上代码将返回一些仅包含'new'但从未有'york'的数据。又怎样?
SELECT * FROM text WHERE MATCH (title,body) AGAINST('new+york' IN BOOLEAN MODE)
答案 0 :(得分:2)
你偶然发现了一个边缘案例 - 问题不在于你的想法。
默认情况下,MySQL全文索引将不索引长度为四个字符的单词,如"new"
。如果您要搜索"new"
,则需要adjust the minimum word length并重建索引。
答案 1 :(得分:1)
尽管查尔斯关于“新”这个词的长度是正确的,但这里还有另一个问题 - 即使使用较短的最小字长重新编制索引(不完全可取),您将获得包含“新”字样的内容约克'和他们之间的许多单词,但不一定只是字符串'纽约'。
此外,“新”这个词很可能超过你记录的50%,因此没有任何记录会返回。
几年前我想出了一种结合exact string matching with fulltext indexes的方法 - 虽然我也没有考虑过布尔模式搜索。