【发布时间】:2012-01-19 00:05:58
【问题描述】:
我认为这个问题是针对 php 提出的,现在我针对 perl 提出了这个问题。我有 2 个数组。我正在使用它来查询我的数据库。现在碰巧这些术语不仅仅是一个单词,因此其中可能有空格。
我声明了 2 个变量,比如 $foo 和 $bar。我有 2 个 for 循环将文件 1 中的每个术语组合到文件 2 中的每个术语并查询数据库。每次每个术语都进入变量。数据库是文本索引的。我正在使用 DBI 模块。我的查询是这样的:
my $query_handle = $connect->prepare("SELECT value FROM value_table WHERE
MATCH(column_text_indexed) AGAINST ('+"$foo" +"$bar"' in boolean mode)") || die
"Prepare failed:$DBI::errstr\n";
它给出了以下错误:
Scalar found where operator expected at program.pl line 32, near ""SELECT value FROM value_table
WHERE MATCH(column_text_indexed) AGAINST ('+"$foo"
(Missing operator before $foo?)
String found where operator expected at program.pl line 32, near "$foo" +""
(Missing operator before " +"?)
Scalar found where operator expected at program.pl line 32, near "" +"$bar"
(Missing operator before $bar?)
String found where operator expected at program.pl line 32, near "$bar"' in boolean mode)""
(Missing operator before "' in boolean mode)"?)
syntax error at program.pl line 32, near ""SELECT value FROM value_table WHERE
MATCH(column_text_indexed) against ('+"$foo"
Execution of program.pl aborted due to compilation errors.
另外,我的另一个顾虑是:当术语“81-α-羟化酶缺乏”或“26-脱氧类固醇活性稳定”时,在术语周围使用引号是否正确?根据http://dev.mysql.com/doc/refman/5.5/en/fulltext-boolean.html,如果要搜索确切的术语并且我希望搜索确切的术语,则使用引号。当我使用 () 时,我会得到结果,但后来我认为它会将由空格分隔的整个单词视为不同的单词,并为其中任何一个单词提供结果。
非常感谢任何帮助。
谢谢。
【问题讨论】:
标签: mysql perl full-text-search dbi