diff --git a/product/ZSQLCatalog/SearchKey/FullTextKey.py b/product/ZSQLCatalog/SearchKey/FullTextKey.py
index ecc5bbd4552be4cc20e4e4e534c72f33d21a8f59..fb868a48b1e7c00c2ae59f55fe762f5940a9f059 100644
--- a/product/ZSQLCatalog/SearchKey/FullTextKey.py
+++ b/product/ZSQLCatalog/SearchKey/FullTextKey.py
@@ -48,6 +48,10 @@ class FullTextKey(DefaultKey):
     return False
 
   def _renderValueAsSearchText(self, value, operator):
+    # XXX:
+    # return value for 'a b' here is '(a b), but keyword search with
+    # '(a b)' means fulltext search with (a OR b), that is different
+    # from fulltext='a b' that means fulltext search with (a AND b).
     return '(%s)' % (value, )
 
   def _processSearchValue(self, search_value, logical_operator,
diff --git a/product/ZSQLCatalog/SearchKey/MroongaFullTextKey.py b/product/ZSQLCatalog/SearchKey/MroongaFullTextKey.py
index 17d7254c8b5367d0e0e9e7f90201253ba32ef2c3..202ab595f439ac42b9eceff96a64e3032b0815b2 100644
--- a/product/ZSQLCatalog/SearchKey/MroongaFullTextKey.py
+++ b/product/ZSQLCatalog/SearchKey/MroongaFullTextKey.py
@@ -39,6 +39,10 @@ class MroongaFullTextKey(DefaultKey):
     return False
 
   def _renderValueAsSearchText(self, value, operator):
+    # XXX:
+    # return value for 'a b' here is '(a b), but keyword search with
+    # '(a b)' means fulltext search with (a OR b), that is different
+    # from fulltext='a b' that means fulltext search with (a AND b).
     return '(%s)' % (value, )
 
   def _processSearchValue(self, search_value, logical_operator,