typesense-python icon indicating copy to clipboard operation
typesense-python copied to clipboard

When page is 1, TypesenseQueryError is returned

Open chimd715 opened this issue 2 years ago • 2 comments

Description

When I query with "page": 1, then Exception: TypesenseQueryError: {'code': 400, 'error': 'Parameter 'page' must be an unsigned integer.'} is returned

It seems like following line is causing problem (Here is the link to the code. https://github.com/typesense/typesense-python/blob/e22e31df314371b41cc57527c4583f3451a2f63d/typesense/api_call.py#L139C1-L139C1 )

# typesense-python/typesense/api_call.py:139-140
if params[key] == True:
   params[key] = 'true'

Steps to reproduce

Using typesense==0.17.0, just query anything with "page": 1

Expected Behavior

First page results should be returned.

Actual Behavior

Exception: TypesenseQueryError: {'code': 400, 'error': 'Parameter 'page' must be an unsigned integer.'}

Metadata

Typesense Version: 0.16.0, 0.17.0

OS: macOS Ventura 13.4.1

chimd715 avatar Sep 19 '23 08:09 chimd715

Also when drop_tokens_threshold, typo_tokens_threshold is 0. This is really annoying. Is this intended behavior?

chimd715 avatar Sep 19 '23 08:09 chimd715

I just ran into this issue while attempting to set the "per_page" to 1 while attempting a multi search, as a work around I ended up converting the value to a string.

for example:

per_page = 1

common_search_params =  {
    "per_page" : str(per_page)
}

client.multi_search.perform(search_requests, common_search_params)

This prevents the normalize_params() function from replacing it with "true" but the resulting POST request is still sent with this parameter set as an integer

POST /multi_search?per_page=1

cdewbery avatar Sep 21 '23 23:09 cdewbery