Čau Honzo,

díky.

Nevylučuju nedostatečný návrh a rád se inspiruju. ;-)

Cílem je jednoduše case-insensitive accent-insensitive substring search na
hodnotě uvnitř JSONu v pg.

Tohle máme v modelu

    fc_data = JSONField(blank=True, editable=False, default=dict)

a jméno osoby dostáváme v Python takhle:

    fc_data['contactInfo']['fullName']

Takže jméno je zanořený v JSONu. Jména se nemění často a určitě by se dala
vytáhnout do formy podobnější vyhledávacímu stroji/lépe indexované tabuli.
Napadlo nás, zda by cestou nejmenšího odporu nebylo využití toho, že to je
pg typ `jsonb` a Django má už snad umět do JSONu koukat. Zatím jsem
nestudoval a je to vcelku specifický případ, tak sonduju, jestli už někdo
nevyřešil, případně jak či jakým směrem.

psycopg2~=2.7.0
django~=1.11.0

Díky,

Vláďa


On 6.12.2017 16:04, Honza Král wrote:
> Ahoj,
>
> hledani pomoci __unaccent__icontains nebude nikdy efektivni z definice
> - vzdy se bude jednat o full scan na tech datech.
>
> Muzu se zeptat, na co takovy lookup potrebujes? Hodne silne mi to
> zavani nestastnym navrhem kde mas data v klicich misto hodnotach...
>
>
> Honza Král
> E-Mail: [email protected]
> Phone:  +420 606 678585
>
>
> 2017-12-06 14:25 GMT+01:00 Vláďa Macek <[email protected]>:
>> Zdar,
>>
>> postgres i Django umožňuje fajnově unaccented case insensitive hledání v
>> normálních fieldech. Tj. name__unaccent__icontains
>>
>> Zprovoznil jste někdo efektivní hledání stejného typu v klíčích nativního
>> JSONFieldu v novém Djangu? Ideálně trochu čistě bez raw SQL, ale přežil
>> bych to.
>>
>> Díky. :-)
>>
>> Vláďa

-- 
-- 
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
--- 
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs 
ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e-maily ze skupiny, zašlete 
e-mail na adresu [email protected].
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/65f9b392-5ec3-a564-6618-e8db788e8a07%40sandbox.cz.
Další možnosti najdete na adrese https://groups.google.com/d/optout.

Reply via email to