0

我在 DOCTRINE1 中使用 LIKE 查询来搜索数据库中的关键字。这是示例:我在 DB“Developer in the hell”中有一个可用的字符串

$str = "Developer in the hell";
$srchKey = "%" . mysql_real_escape_string($searchString) . "%";
$q = Doctrine_Query::create()->from("Movie as m")
                             ->where('m.name LIKE '."'$srchKey'". ' or m.keywords LIKE'."'$srchKey'")
                             ->fetchArray();

令人担忧的是,如果我搜索“开发者”,它会返回结果,但如果我搜索“开发者地狱”,则不会返回任何结果。因为字符串中的中间词被跳过了。

DOCTRINE 是否提供任何通配符/高级选项/条件来处理这种情况。

4

1 回答 1

1

首先,您在构建查询时做错了。

您为查询提供的教义转义参数,因此您不必mysql_real_escape_string自己使用。

$str = "Developer in the hell";
$srchKey = "%" . $str . "%";
$q = Doctrine_Query::create()
    ->from("Movie as m")
    ->where('m.name LIKE ? or m.keywords LIKE ?', array($srchKey, $srchKey))
    ->fetchArray();

关于您的搜索引擎,您应该看看Searchable 行为。它将比简单的LIKE查询更强大。但我不知道它是否像你想要的那样处理多个词搜索。

或者你可以试试 Lucene。Jobeet教程中提供了一个教程。

于 2013-07-30T08:27:57.777 回答