2

fooと/barの両方で行を検索できます。col1col2

SELECT col1, col2
FROM some_table
WHERE MATCH (col1,col2)
      AGAINST ('+foo +bar' IN BOOLEAN MODE);

しかし、正確なフレーズ"foo.bar" (途中にピリオドがある)を検索したいとします。Boolean Full-Text Searches のドキュメントページでは、演算子であるフルストップについて言及されていないため、次を使用できると思いました。

AGAINST ('+foo.bar' IN BOOLEAN MODE);

ただし、これは次と同じ結果を返します。

AGAINST ('+foo.couldBeAnything' IN BOOLEAN MODE);
AGAINST ('+foo' IN BOOLEAN MODE);
AGAINST ('+foo.*' IN BOOLEAN MODE); #Note you would expect this to look for instances of foo. followed by something, rather than just the same as foo

.

これが期待どおりに機能しないのはなぜですか? どうすれば for と照合できfoo.barますか?

4

2 に答える 2

1

これを機能させるには、リテラルを二重引用符"bar.foo"で囲む必要があります。これは、ポイントがおそらくor演算子と同等であるためです。

于 2012-08-22T16:02:01.017 に答える
1

これをテストするためにすぐに利用できる全文テーブルはありませんが、これでうまくいくはずです。

SELECT col1, col2
FROM some_table
WHERE MATCH (col1,col2)
    AGAINST ('+\"foo.bar\"' IN BOOLEAN MODE);
于 2012-08-22T15:48:25.603 に答える