Skip to content

Ricerca Precisa #3

@ncvescera

Description

@ncvescera

Migliorare la query per la ricerca precisa (quella che si attiva anteponendo * alla stringa di ricerca per Posizione).

Qui di seguito un link utile di una domanda di stackOverflow: link

Una delle risposte suggerisce questo:

SELECT 
id, 
(
   3959 *
   acos(cos(radians(37)) * 
   cos(radians(lat)) * 
   cos(radians(lng) - 
   radians(-122)) + 
   sin(radians(37)) * 
   sin(radians(lat )))
) AS distance 
FROM markers 
HAVING distance < 28 
ORDER BY distance LIMIT 0, 20;

Sembra fattibile dato che non ci sono operazioni come POW() o SQRT() che non sono nativamente supportate da SQLite.

Aggiornamento:
Le funzioni trigonometriche non sono supportate da SQLite e per fare delle funzioni custom è mooolto difficile.
Conviene salvare le coordinate anche in forma "trigonometrica" (ciò applicare la funzione seno e coseno alle coordinate) così facendo possono essere utilizzate semplici operazioni (+, -, *) per la ricerca.
Oppure si può lasciare tutto com'era e far fare tutto il lavoro ad Android (potrebbe essere leggermente pesante (?))
Controllare questo: link

Cose da fare:

  • Implementare la query soprastante
  • Scegliere il metodo migliore da implementare
  • Testarla

Supposizione:
Potrebbe non dover più servire un'estrema precisione dato che è stata introdotta la PrecisionSearch e la nonPrecisionSearch

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions