Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 第1条中的高级搜索_Php_Sql_Doctrine_Zend Lucene - Fatal编程技术网

Php 第1条中的高级搜索

Php 第1条中的高级搜索,php,sql,doctrine,zend-lucene,Php,Sql,Doctrine,Zend Lucene,我在DOCTRINE1中使用LIKE查询在数据库中搜索关键字。 下面是一个例子:我在DB“地狱中的开发者”中有一个字符串 问题是如果我搜索“开发者”,它会返回结果,但如果我搜索“开发者地狱”,它不会返回任何结果。因为跳过了字符串中的中间到中间的单词 条令是否提供了任何通配符/高级选项/条件来处理此类情况。首先,您在构建查询时做得不对 您为查询提供的参数,因此您不必自己使用mysql\u real\u escape\u string $str = "Developer in the hell";

我在DOCTRINE1中使用LIKE查询在数据库中搜索关键字。 下面是一个例子:我在DB“地狱中的开发者”中有一个字符串

问题是如果我搜索“开发者”,它会返回结果,但如果我搜索“开发者地狱”,它不会返回任何结果。因为跳过了字符串中的中间到中间的单词


条令是否提供了任何通配符/高级选项/条件来处理此类情况。

首先,您在构建查询时做得不对

您为查询提供的参数,因此您不必自己使用
mysql\u real\u escape\u 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();
关于你的搜索引擎,你应该看看。它将比像这样的简单查询功能更强大。但我不知道它是否能像你想的那样处理多词搜索


或者你可以试试Lucene。A作为Jobeet教程的一部分。

@jok感谢您的更正。我尝试过可搜索行为,但没有成功,现在看来我必须使用Zend_Lucene。条令自动转义参数,所以您不必担心。。。!!此外,您不应该使用
mysql\u***
函数。。。改用
mysqli\u***
,其中我表示改进。有关更多信息,请参阅。你现在需要的是
$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();