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