1

我有一个如下查询:

SELECT prd_id FROM products WHERE MATCH (prd_search_field) AGAINST ('+gul* +yetistiren* +adam*' in boolean mode);

这不会返回包含“gul”的行。

http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html 文件是这么说的。

那么搜索 '+word +the*' 可能会返回比搜索 '+word +the' 更少的行:前一个查询保持原样并且需要 word 和 the*(以 the 开头的单词)都存在在文档中。后一个查询被转换为 +word(只需要 word 存在)。the 太短又是一个停用词,任何一个条件都足以导致它被忽略。

因此,据我了解,在我的情况下不能应用太短的单词条件,因为我在每个单词后使用 *。这有什么问题?

作为解决方案,我使用以下查询,但由于它很慢,我需要找到另一个解决方案。任何想法将不胜感激?提前致谢..

SELECT prd_id FROM products WHERE 1 AND MATCH (prd_search_field) AGAINST ('+yetistiren* +adam*' in boolean mode) AND prd_search_field LIKE '%gul%';

作为注释 ft_min_word_length=4 在所有共享主机环境中都是默认值,我无法更改它。

4

0 回答 0