[Groonga-commit] groonga/gcs [master] Support size parameter for search. Closes #31

Back to archive index

null+****@clear***** null+****@clear*****
2012年 7月 5日 (木) 17:36:29 JST


Yoji SHIDARA	2012-07-05 17:36:29 +0900 (Thu, 05 Jul 2012)

  New Revision: 19dc588698e90a15fbf54b56439efc0c10eb0ac1
  https://github.com/groonga/gcs/commit/19dc588698e90a15fbf54b56439efc0c10eb0ac1

  Log:
    Support size parameter for search. Closes #31

  Modified files:
    lib/api/2011-02-01/search.js
    test/search.test.js

  Modified: lib/api/2011-02-01/search.js (+6 -4)
===================================================================
--- lib/api/2011-02-01/search.js    2012-07-05 17:25:20 +0900 (c4231be)
+++ lib/api/2011-02-01/search.js    2012-07-05 17:36:29 +0900 (6652331)
@@ -26,7 +26,8 @@ function select(database, options, callback) {
     if (error) {
       callback(error);
     } else {
-      callback(null, formatSelectResults(data));
+      var numFoundRecords = data[0][0][0];
+      callback(null, formatSelectResults(data), numFoundRecords);
     }
   });
 }
@@ -37,14 +38,15 @@ exports.createHandler = function(database) {
     var domain = new Domain(request);
     var query = request.query.q || '';
     var matchColumns = database.columnNamesSync(domain.name).join('||');
+    var size = parseInt(request.query.size || '10', 10);
     var options = {
       table: domain.name,
       query: query,
-      limit: 10,
+      limit: size,
       match_columns: matchColumns
     };
 
-    select(database, options, function(error, data) {
+    select(database, options, function(error, data, numFoundRecords) {
       var finishedAt = new Date();
       var elapsedTime = finishedAt - startedAt;
       var dummyRid = '000000000000000000000000000000000000000000000000000000000000000';
@@ -73,7 +75,7 @@ exports.createHandler = function(database) {
         rank: '-text_relevance', // FIXME
         'match-expr': '', // FIXME
         hits: {
-          found: data.length,
+          found: numFoundRecords,
           start: 0,
           hit: data
         },

  Modified: test/search.test.js (+48 -0)
===================================================================
--- test/search.test.js    2012-07-05 17:25:20 +0900 (4922972)
+++ test/search.test.js    2012-07-05 17:36:29 +0900 (3d8116b)
@@ -142,4 +142,52 @@ suite('Search API', function() {
       done();
     }
   );
+
+  testSearch('/2011-02-01/search?q=Tokyo&size=2',
+             'search-companies-00000000000000000000000000.localhost',
+    function(response, body, done) {
+      var actual = JSON.parse(body);
+      assert.operator(actual.info['time-ms'], '>=', 0, 'time-ms is ok');
+      actual.info['time-ms'] = 0; // always set 0 for test
+      var expected = {
+        rank: '-text_relevance',
+        'match-expr': '',
+        hits: {
+          found: 3,
+          start: 0,
+          hit: [
+            {
+              id: 'id1',
+              data: {
+                _id: [1],
+                _key: ['id1'],
+                address: ['Shibuya, Tokyo, Japan'],
+                description: [''],
+                email_address: ['info****@razil*****'],
+                name: ['Brazil']
+              }
+            },
+            {
+              id: 'id3',
+              data: {
+                _id: [3],
+                _key: ['id3'],
+                address: ['Hongo, Tokyo, Japan'],
+                description: [''],
+                email_address: ['info****@clear*****'],
+                name: ['ClearCode Inc.']
+              }
+            }
+          ]
+        },
+        info: {
+          rid: '000000000000000000000000000000000000000000000000000000000000000',
+          'time-ms': 0, // always 0
+          'cpu-time-ms': 0
+        }
+      };
+      assert.deepEqual(actual, expected);
+      done();
+    }
+  );
 });
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
下载 



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