[Groonga-commit] groonga/gcs [master] Support term

Back to archive index

null+****@clear***** null+****@clear*****
2012年 8月 1日 (水) 17:15:57 JST


Yoji SHIDARA	2012-08-01 17:15:57 +0900 (Wed, 01 Aug 2012)

  New Revision: 28770e5cd1b04a45754addf41a820326fad1c853
  https://github.com/groonga/gcs/commit/28770e5cd1b04a45754addf41a820326fad1c853

  Log:
    Support term

  Modified files:
    lib/q-translator.js
    test/q-translator.test.js

  Modified: lib/q-translator.js (+8 -0)
===================================================================
--- lib/q-translator.js    2012-08-01 17:08:51 +0900 (8c5affb)
+++ lib/q-translator.js    2012-08-01 17:15:57 +0900 (1765d1e)
@@ -43,6 +43,14 @@ QueryTranslator.prototype = {
     }
     return context.defaultField + ":'" + escapeTerm(term) + "'";
   },
+  translateTerm: function(query, context) {
+    this.skipSpaces(query, context);
+    if (query[context.offset] == '"') {
+      return this.translatePhraseTerm(query, context);
+    } else {
+      return this.translateIndividualTerm(query, context);
+    }
+  },
   skipSpaces: function(query, context) {
     for (; context.offset < query.length; context.offset++) {
       if (query[context.offset] != " ") {

  Modified: test/q-translator.test.js (+25 -0)
===================================================================
--- test/q-translator.test.js    2012-08-01 17:08:51 +0900 (87ee9a5)
+++ test/q-translator.test.js    2012-08-01 17:15:57 +0900 (3440ec4)
@@ -27,6 +27,26 @@ function testIndividualTerm(label, individualTerm, expectedBooleanQuery,
   });
 }
 
+function testTerm(label, term, expectedBooleanQuery, expectedOffset) {
+  test('term: ' + label + ': ' +
+       '<' + term + '> -> <' + expectedBooleanQuery + '>', function() {
+    var translator = new QueryTranslator();
+    var context = {
+      offset: 0,
+      defaultField: 'field'
+    };
+    var actualBooleanQuery = translator.translateTerm(term, context);
+    assert.deepEqual({
+                       booleanQuery: actualBooleanQuery,
+                       offset: context.offset
+                     },
+                     {
+                       booleanQuery: expectedBooleanQuery,
+                       offset: expectedOffset
+                     });
+  });
+}
+
 suite('QueryTranslator', function() {
   testIndividualTerm("an individual term",
                      "star wars",
@@ -36,4 +56,9 @@ suite('QueryTranslator', function() {
                      "let's go",
                      "field:'let\\'s'",
                      "let's".length);
+
+  testTerm("a term",
+           "  star wars",
+           "field:'star'",
+           "  star".length);
 });
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



Groonga-commit メーリングリストの案内
Back to archive index