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... 下载