4

次のMySQLクエリがあります。

SELECT title, description 
FROM some_table 
WHERE MATCH (title,description) AGAINST ('+denver (REGEXP "[[:<:]]colorado[s]*[[:>:]]")' IN BOOLEAN MODE);

ここでの「正規表現」は、「完全な単語」コロラド(末尾の「s」の有無にかかわらず)を検索します。

実際には、( "denver")AND("colorado"または"colorados")を持つ行のみを選択したいと思います。しかし、正規表現に「+」を付けることはできません。試しましたが、要件に一致する行がテーブルにありますが、結果は0になりました。

「+」をREGEXPの使用に対して機能させる方法についてのアイデアはありますか?これは、「denver」と「colorado」がselectステートメントの作成に使用する変数の値であるPHPスクリプト内から作成しています。

私のPHP/MySQLスクリプトは次のようになります。

SELECT title, description 
FROM some_table 
WHERE MATCH (title,description) AGAINST ('+$var1 (REGEXP "[[:<:]]$var2[s]*[[:>:]]")' IN BOOLEAN MODE);
4

1 に答える 1

3

正規表現と MATCH ... IN BOOLEAN MODE を組み合わせることはできないと思います。ブール式を記述するための構文を使用する必要があります。

次のようなことを試してください:

SELECT title, description
FROM some_table
WHERE MATCH (title,description)
      AGAINST ('+denver +(colorado colorados)' IN BOOLEAN MODE);
于 2012-05-24T04:40:31.587 に答える