我有一个奇怪的问题。我正在测试与此查询相关的结果:
SELECT
id,
title,
MATCH (title) AGAINST (:searchNormal ) AS relevance
FROM
movie
WHERE
MATCH (title) AGAINST (:searchModified IN BOOLEAN MODE)
HAVING relevance > 0.2
ORDER BY relevance DESC
LIMIT 20
不用担心用户输入消毒,
:searchNormal
只是
trim($searchQuery)
和
:searchModified
是
'+' . str_replace(' ', '+', trim($searchQuery)
我这样用:
$entityManager = $this->getDoctrine()->getManager();
$statementData = array(
'searchNormal' => trim($searchQuery),
'searchModified' => '+' . str_replace(' ', '+', trim($searchQuery))
);
$statement = $entityManager->getConnection()->prepare($SQLquery);
$statement->execute($statementData);
本地计算机上的结果:
当我在本地计算机上的数据库引擎上直接运行SQL查询时,它运行良好。例如,短语 green kill 和 kill green 都会返回一个结果,“Long Green Kill”。运行代码时会发生同样的情况
dev
和prod
Symfony envs。
生产结果:
当我直接在DB上在生产机器上运行它时,它也可以工作。 但是当我运行代码时,它会返回凌乱的结果。 “长绿杀戮”仅在短语“绿色杀戮”中排在最前面,下面有数百条记录,具体取决于搜索查询中的第一个单词,标题中包含“绿色”或“终止”。 如果它在数据库和PHP上以相同(错误或正确)的方式在一台机器上工作,我不会感到惊讶,但这很奇怪。你有什么想法,可能发生了什么?