Object
This class is a helper for the class “TokyoTyrant::RDBTBL”.%%
query condition: string is equal to
query condition: string is included in
query condition: string begins with
query condition: string ends with
query condition: string includes all tokens in
query condition: string includes at least one token in
query condition: string is equal to at least one token in
query condition: string matches regular expressions of
query condition: number is equal to
query condition: number is greater than
query condition: number is greater than or equal to
query condition: number is less than
query condition: number is less than or equal to
query condition: number is between two tokens of
query condition: number is equal to at least one token in
query condition: full-text search with the phrase of
query condition: full-text search with all tokens in
query condition: full-text search with at least one token in
query condition: full-text search with the compound expression of
query condition: negation flag
query condition: no index flag
order type: string ascending
order type: string descending
order type: number ascending
order type: number descending
set operation type: union
set operation type: intersection
set operation type: difference
Create a query object.%% `rdb’ specifies the remote database object.%% The return value is the new query object.%%
# File tokyotyrant.rb, line 1321 1321: def initialize(rdb) 1322: raise ArgumentError if !rdb.is_a?(TokyoTyrant::RDBTBL) 1323: @rdb = rdb 1324: @args = [ "hint" ] 1325: end
Add a narrowing condition.%% `name’ specifies the name of a column. An empty string means the primary key.%% `op’ specifies an operation type: `TokyoTyrant::RDBQRY::QCSTREQ’ for string which is equal to the expression, `TokyoTyrant::RDBQRY::QCSTRINC’ for string which is included in the expression, `TokyoTyrant::RDBQRY::QCSTRBW’ for string which begins with the expression, `TokyoTyrant::RDBQRY::QCSTREW’ for string which ends with the expression, `TokyoTyrant::RDBQRY::QCSTRAND’ for string which includes all tokens in the expression, `TokyoTyrant::RDBQRY::QCSTROR’ for string which includes at least one token in the expression, `TokyoTyrant::RDBQRY::QCSTROREQ’ for string which is equal to at least one token in the expression, `TokyoTyrant::RDBQRY::QCSTRRX’ for string which matches regular expressions of the expression, `TokyoTyrant::RDBQRY::QCNUMEQ’ for number which is equal to the expression, `TokyoTyrant::RDBQRY::QCNUMGT’ for number which is greater than the expression, `TokyoTyrant::RDBQRY::QCNUMGE’ for number which is greater than or equal to the expression, `TokyoTyrant::RDBQRY::QCNUMLT’ for number which is less than the expression, `TokyoTyrant::RDBQRY::QCNUMLE’ for number which is less than or equal to the expression, `TokyoTyrant::RDBQRY::QCNUMBT’ for number which is between two tokens of the expression, `TokyoTyrant::RDBQRY::QCNUMOREQ’ for number which is equal to at least one token in the expression, `TokyoTyrant::RDBQRY::QCFTSPH’ for full-text search with the phrase of the expression, `TokyoTyrant::RDBQRY::QCFTSAND’ for full-text search with all tokens in the expression, `TokyoTyrant::RDBQRY::QCFTSOR’ for full-text search with at least one token in the expression, `TokyoTyrant::RDBQRY::QCFTSEX’ for full-text search with the compound expression. All operations can be flagged by bitwise-or: `TokyoTyrant::RDBQRY::QCNEGATE’ for negation, `TokyoTyrant::RDBQRY::QCNOIDX’ for using no index.%% `expr’ specifies an operand exression.%% The return value is always `nil’.%%
# File tokyotyrant.rb, line 1331 1331: def addcond(name, op, expr) 1332: @args.push("addcond" + "\00"" + name + "\00"" + op.to_s + "\00"" + expr) 1333: return nil 1334: end
Get the hint string.%% The return value is the hint string.%%
# File tokyotyrant.rb, line 1413 1413: def hint() 1414: return @hint 1415: end
Retrieve records with multiple query objects and get the set of the result.%% `others’ specifies an array of the query objects except for the self object.%% `type’ specifies a set operation type: `TokyoTyrant::RDBQRY::MSUNION’ for the union set, `TokyoTyrant::RDBQRY::MSISECT’ for the intersection set, `TokyoTyrant::RDBQRY::MSDIFF’ for the difference set. If it is not defined, `TokyoTyrant::RDBQRY::MSUNION’ is specified.%% The return value is an array of the primary keys of the corresponding records. This method does never fail. It returns an empty array even if no record corresponds.%% If the first query object has the order setting, the result array is sorted by the order.%%
# File tokyotyrant.rb, line 1421 1421: def metasearch(others, type = MSUNION) 1422: raise ArgumentError if !others.is_a?(Array) 1423: args = @args.dup 1424: others.each do |other| 1425: next if !other.is_a?(RDBQRY) 1426: args.push("next") 1427: other._args.each do |arg| 1428: args.push(arg) 1429: end 1430: end 1431: args.push("mstype\00"" + type.to_s) 1432: @hint = "" 1433: rv = @rdb.misc("metasearch", args, RDB::MONOULOG) 1434: return Array::new if !rv 1435: _popmeta(rv) 1436: return rv 1437: end
Execute the search.%% The return value is an array of the primary keys of the corresponding records. This method does never fail. It returns an empty array even if no record corresponds.%%
# File tokyotyrant.rb, line 1353 1353: def search() 1354: @hint = "" 1355: rv = @rdb.misc("search", @args, RDB::MONOULOG) 1356: return Array::new if !rv 1357: _popmeta(rv) 1358: return rv 1359: end
Get the count of corresponding records.%% The return value is the count of corresponding records or 0 on failure.%%
# File tokyotyrant.rb, line 1402 1402: def searchcount() 1403: args = @args.dup 1404: args.push("count") 1405: @hint = "" 1406: rv = @rdb.misc("search", args, RDB::MONOULOG) 1407: return 0 if !rv 1408: _popmeta(rv) 1409: return rv.size > 0 ? rv[0].to_i : 0 1410: end
Get records corresponding to the search.%% `names’ specifies an array of column names to be fetched. An empty string means the primary key. If it is not defined, every column is fetched.%% The return value is an array of column hashes of the corresponding records. This method does never fail. It returns an empty list even if no record corresponds.%% Due to the protocol restriction, this method can not handle records with binary columns including the “0“ chracter.%%
# File tokyotyrant.rb, line 1375 1375: def searchget(names = nil) 1376: raise ArgumentError if names && !names.is_a?(Array) 1377: args = @args.dup 1378: if names 1379: args.push("get\00"" + names.join("\00"")) 1380: else 1381: args.push("get") 1382: end 1383: @hint = "" 1384: rv = @rdb.misc("search", args, RDB::MONOULOG) 1385: return Array::new if !rv 1386: _popmeta(rv) 1387: for i in 0...rv.size 1388: cols = Hash::new 1389: cary = rv[i].split("\00"") 1390: cnum = cary.size - 1 1391: j = 0 1392: while j < cnum 1393: cols[cary[j]] = cary[j+1] 1394: j += 2 1395: end 1396: rv[i] = cols 1397: end 1398: return rv 1399: end
Remove each corresponding record.%% If successful, the return value is true, else, it is false.%%
# File tokyotyrant.rb, line 1362 1362: def searchout() 1363: args = @args.dup 1364: args.push("out") 1365: @hint = "" 1366: rv = @rdb.misc("search", args, 0) 1367: return false if !rv 1368: _popmeta(rv) 1369: return true 1370: end
Set the maximum number of records of the result.%% `max’ specifies the maximum number of records of the result. If it is not defined or negative, no limit is specified.%% `skip’ specifies the maximum number of records of the result. If it is not defined or not more than 0, no record is skipped.%% The return value is always `nil’.%%
# File tokyotyrant.rb, line 1347 1347: def setlimit(max = 1, skip = 1) 1348: @args.push("setlimit" + "\00"" + max.to_s + "\00"" + skip.to_s) 1349: return nil 1350: end
Set the order of the result.%% `name’ specifies the name of a column. An empty string means the primary key.%% `type’ specifies the order type: `TokyoTyrant::RDBQRY::QOSTRASC’ for string ascending, `TokyoTyrant::RDBQRY::QOSTRDESC’ for string descending, `TokyoTyrant::RDBQRY::QONUMASC’ for number ascending, `TokyoTyrant::RDBQRY::QONUMDESC’ for number descending. If it is not defined, `TokyoTyrant::RDBQRY::QOSTRASC’ is specified.%% The return value is always `nil’.%%
# File tokyotyrant.rb, line 1339 1339: def setorder(name, type = QOSTRASC) 1340: @args.push("setorder" + "\00"" + name + "\00"" + type.to_s) 1341: return nil 1342: end
Pop meta data from the result list.
# File tokyotyrant.rb, line 1448 1448: def _popmeta(res) 1449: i = res.length - 1 1450: while i >= 0 1451: pkey = res[i] 1452: if pkey =~ /^\00\\00\\[\[HINT\]\]\n/ 1453: @hint = pkey.gsub(/^\00\\00\\[\[HINT\]\]\n/, "") 1454: res.pop 1455: else 1456: break 1457: end 1458: i -= 1 1459: end 1460: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.