class ChinoRuby::Search

Constants

IDs

Public Instance Methods

complex_search_documents(schema_id, result_type, sort, query, limit=nil, offset=nil) click to toggle source

The new Search API accept a query hash, documented here: console.test.chino.io/docs/v1#header-search-query query hash need to be converted to json e.g. to build this JSON query {

"and": [
    {
        "field": "user_id",
        "type": "eq",
        "value": "aaaaaaa"
    },
    {
        "or": [
            {
                "field": "first_name",
                "type": "like",
                "value": "*Mario*"
            },
            {
                "field": "last_name",
                "type": "like",
                "value": "*Mario*"
            }
        ]
    }
]

}

You can use code like this:

query = { and: [] } query << ChinoFilterOption.new('user_id', 'eq', “aaaaaaa”)

or_conditions = { or: [] } or_conditions << ChinoFilterOption.new('first_name', 'like', “Mario”) or_conditions << ChinoFilterOption.new('last_name', 'like', “Mario”) query << or_conditions

# File lib/chino_ruby/classes.rb, line 1395
def complex_search_documents(schema_id, result_type, sort, query, limit=nil, offset=nil)
  check_string(schema_id)
  check_string(result_type)
  check_json(sort)
  check_json(query)
  data = { result_type: result_type, query: query, sort: sort}.to_json

  docs = GetDocumentsResponse.new
  docs.from_json(post_resource("/search/documents/#{schema_id}", data, limit || ChinoRuby::QUERY_DEFAULT_LIMIT, offset || 0).to_json)

  case result_type
  when 'ONLY_ID'
    docs.IDs = docs.IDs.map { |id| id }

  when 'FULL_CONTENT', 'NO_CONTENT'
    docs.documents = docs.documents.map do |d|
      doc = Document.new
      doc.from_json(d.to_json)
    end
  end

  docs
end
search_documents(schema_id, result_type, filter_type, sort, filter, limit=nil, offset=nil) click to toggle source
# File lib/chino_ruby/classes.rb, line 1334
def search_documents(schema_id, result_type, filter_type, sort, filter, limit=nil, offset=nil)
  check_string(schema_id)
  check_string(result_type)
  check_string(filter_type)
  check_json(sort)
  check_json(filter)
  data = {"result_type": result_type, "filter_type": filter_type, "filter": filter, "sort": sort}.to_json
  docs = GetDocumentsResponse.new
  if limit==nil && offset==nil
    docs.from_json(post_resource("/search/documents/#{schema_id}", data, ChinoRuby::QUERY_DEFAULT_LIMIT, 0).to_json)
  else
    docs.from_json(post_resource("/search/documents/#{schema_id}", data, limit, offset).to_json)
  end
  ds = docs.documents
  docs.documents = []
  ds.each do |d|
    doc = Document.new
    doc.from_json(d.to_json)
    docs.documents.push(doc)
  end
  docs
end
search_users(user_schema_id, result_type, filter_type, sort, filter, limit=nil, offset=nil) click to toggle source
# File lib/chino_ruby/classes.rb, line 1419
def search_users(user_schema_id, result_type, filter_type, sort, filter, limit=nil, offset=nil)
  check_string(user_schema_id)
  check_string(result_type)
  check_string(filter_type)
  check_json(sort)
  check_json(filter)
  data = {"result_type": result_type, "filter_type": filter_type, "filter": filter, "sort": sort}.to_json
  users = GetUsersResponse.new
  if limit==nil && offset==nil
    users.from_json(post_resource("/search/users/#{user_schema_id}", data, ChinoRuby::QUERY_DEFAULT_LIMIT, 0).to_json)
  else
    users.from_json(post_resource("/search/users/#{user_schema_id}", data, limit, offset).to_json)
  end
  us = users.users
  users.users = []
  us.each do |u|
    user = User.new
    user.from_json(u.to_json)
    users.users.push(user)
  end
  users
end