humane-searcher
v2.0.4
Published
Searcher module for Humane Discovery
Downloads
10
Readme
humane-searcher
APIs
Note:
- Searcher APIs are available at:
http://<server-url>/:instanceName/searcher/api
.- All types must be valid index types defined in configuration.
- BODY must be valid
JSON
.- All requests shall have
Content-Type
header as:Content-Type: application/json
Search for Type
This method build search results for a given type, based on input text.
Method 1
TYPE :
POST
URL :
/search
BODY : A
JSON
object comprising of following fields -type:
- type of document you want to search [defaults to as defined in search configuration]
null
or*
means search all types and is calledmulti
(response structure would change a bit for this case).- must be one of the valid type defined in search configuration
mode:
- search mode [defaults to
organic
] - modes do not carry any meaning to search, they are useful for categorising type of searches and thus search analytics.
- valid search modes:
organic
- user for manual input searchesautocomplete:entity
- use for autocompleted entity based searchautocomplete:popular_search
- use for autocompleted popular search query based searchsuggestion:entity
- use for suggested entity based searchsuggestion:popular_search
- use for suggested popular search based search
- search mode [defaults to
text: the input text [mandatory, can not be empty string]
originalInput:
- typically for autocomplete selection, searched text would different from original input text.
- for example: person may have entered just
ss
and selectedssc
from autocomplete box for search. - you can capture such original input here, useful for search analytics.
filter:
- custom filters if any
- valid filters are the one defined in search configuration
- Filter structure:
{<filter-name>: <filter-value>}
- for
lang
filter only,filter-value
must be aJSON
object:{primary: <primary-language-code>, secondary: [<secondary codes>]}
sort:
- a custom sort if any [defaults to
SCORE
basedDESC
sort] - Valid structure:
{field: <sort field>, order: <sort order>}
- sort field should be a valid sort field defined in search configuration
- sort order should be one of
DESC
orASC
[defaults toDESC
]
- a custom sort if any [defaults to
page: 0 based page number, results are paginated in page size of
count
[defaults to0
]count: number of results or page size [defaults to
10
]requestTime: optional requestTime that can be passed from client to calculate request RTT.
Body may look like following -
{ page: <page-num>, count: <page-size>, type: <type>, mode: <search-mode>, filter: <filters>, sort: {field: <sort field>, order: <sort order>}, requestTime: <request-time-in-epoch>, text: <search-text>, originalInput: <original input> }
SUCCESS RESPONSE CODE:
200
SUCCESS RESPONSE :
single
type scenario{ totalResults: <num total results>, results: [ { _id: <id of document>, _score: <relevancy score of document>, _type: <type of document>, weight: <weight of document>, // // other source fields of document // }, ... ], queryTimeTaken: <query time taken in ms>, requestTime: <request time as passed in request>, serviceTimeTaken: <service time taken in ms> }
multi
types scenario{ multi: true, totalResults: <num total results for all types>, results: { <type>: { results: [ { _id: <id of document>, _score: <relevancy score of document>, _type: <type of document>, weight: <weight of document>, // // other source fields of document // }, ... ], totalResults: <num total results for the type> } }, queryTimeTaken: <query time taken in ms>, requestTime: <request time as passed in request>, serviceTimeTaken: <service time taken in ms> }
ERROR RESPONSE: See Common Error Scenarios
Method 2
TYPE:
GET
URL:
/search
PARAMS: qs equivalent stringify of BODY as in method 1.
SUCCESS RESPONSE: Same as method 1
ERROR RESPONSE: Same as method 1
Method 3
TYPE:
POST
URL:
/:type/search
BODY: Same as method-1, but omit
type
in body.SUCCESS RESPONSE: Same as method 1
ERROR RESPONSE: See Common Error Scenarios
Note: Not a valid method for multi search
Method 4
TYPE:
GET
URL:
/:type/search
PARAMS: Same as method 2, but omit
type
in params.SUCCESS RESPONSE: Same as method 1
ERROR RESPONSE: See Common Error Scenarios
Note: Not a valid method for multi search
Autocomplete for Type
This method builds autocomplete suggestions for a given type, based on input text.
Method 1
TYPE :
POST
URL :
/autocomplete
BODY : A
JSON
object comprising of following fields -type: see search for explanation, except valid types are as defined in autocomplete configuration.
text: see search for explanation
filter: see search for explanation
page: see search for explanation, though pagination does not make sense for autocomplete, but you can still do it if you want.
count: number of results or page size [defaults to
5
]requestTime: see search for explanation
SUCCESS RESPONSE : see search for explanation and scenarios
ERROR RESPONSE: See Common Error Scenarios
Method 2
TYPE:
GET
URL:
/autocomplete
PARAMS: qs equivalent stringify of BODY as in method 1.
SUCCESS RESPONSE: Same as method 1
ERROR RESPONSE: See Common Error Scenarios
Method 3
TYPE:
POST
URL:
/:type/autocomplete
BODY: Same as method-1, but omit
type
in body.SUCCESS RESPONSE: Same as method 1
ERROR RESPONSE: See Common Error Scenarios
Note: Not a valid method for multi autocomplete
Method 4
TYPE:
GET
URL:
/:type/autocomplete
PARAMS: Same as method 2, but omit
type
in params.SUCCESS RESPONSE: Same as method 1
ERROR RESPONSE: See Common Error Scenarios
Note: Not a valid method for multi autocomplete
Common Error Scenarios
Case: Unrecognized Type - when type is not among the configured
Http Status Code: 400
Sample Response Body :
{ "_statusCode": 400, "_errorCode": "VALIDATION_ERROR", "_status": "ERROR", "details": { "message": "\"type\" must be one of [category_entity, author_entity, publisher_entity, book, null, *]", "path": "type", "type": "any.allowOnly", "context": { "valids": [ "category_entity", "author_entity", "publisher_entity", "book", null, "*" ], "key": "type" } }, "_errorId": 1458927217570 }
Case: Internal Service Error - when there is some internal service error
Http Status Code: 500
Sample Response Body :
{ "_statusCode": 500, "_errorCode": "INTERNAL_SERVICE_ERROR", "_status": "ERROR", "_errorId": 1458819775194 }