Strategia di ricerca di testo completo per il mio sito web

1

Ho un sito Web che consente agli utenti di cercare elementi in varie categorie. Ogni categoria è un'area separata (pagina) del mio sito web. Ad esempio, alcune categorie potrebbero essere automobili, biciclette, libri, ecc. Al momento un utente deve cercare un oggetto andando sulla pagina (ad esempio, le auto) e cercando l'auto che desidera. Vorrei consentire all'utente di cercare qualsiasi cosa sul mio sito, dalla mia home page principale.

Al momento, ogni pagina (categoria) ha il proprio set di tabelle, e non voglio veramente attivare Ricerca full-text per ogni tabella (più di 20) e cercare ogni tabella individualmente quando una ricerca è fatto. Questo sarà lento e noioso.

Quello che sto pensando di fare è creare una singola tabella che contenga tutte le informazioni ricercabili per ogni categoria di elementi (quando un elemento viene salvato nella rispettiva tabella, vorrei copiare tutte le informazioni ricercabili nella mia tabella 'Cerca' ). Quindi girerei la ricerca full-text per quella tabella, e cercherei quella tabella.

Suona ragionevole? Esiste un modo migliore? Non ho mai usato la ricerca di testo completo prima, quindi questo è nuovo per me.

    
posta Hosea146 29.06.2013 - 20:38
fonte

2 risposte

3

A seconda che tu abbia la libertà di farlo, ti suggerirei di usare qualcosa progettato per la ricerca piuttosto che fare ricerche full-text nel database. I database non sono realmente progettati per le ricerche full-text, quindi le prestazioni non saranno le migliori e potrebbero sovraccaricare molto.

Suggerirei di dare un'occhiata a Solr , ElasticSearch o Sfinge . Ti permetteranno di fare ricerche molto più personalizzate rispetto a una ricerca nel database full text. Offrono tutti modi per importare dati da un database e possono fare indicizzazione in base ai campi forniti (importante se si desidera che un marchio venga indicizzato in modo diverso rispetto a un nome di prodotto, ad esempio).

    
risposta data 30.06.2013 - 02:47
fonte
0

Bene, per i principianti vale la pena chiedersi perché si hanno tabelle distinte per ogni categoria, invece di condividere le tabelle tra le categorie. Se dovessi riprogettare il tuo database da zero, avrei una struttura a tre dimensioni della tabella:

  1. Categorie (auto / moto / ecc.)
  2. Articoli (vale a dire, una cosa che appartiene a una categoria)
  3. Proprietà oggetto (una cosa su un oggetto che è ricercabile.)

Dovresti avere indici su Proprietà elemento, sia per il nome della proprietà che per il suo valore, e una ricerca full-text sul testo dell'articolo.

Potrebbero essere aggiunte tabelle aggiuntive per Tipo di proprietà e "testo completo", oppure potrebbero essere incorporate nelle tabelle sopra. (Questa è una domanda di ottimizzazione, dopotutto, e l'ottimizzazione prematura è la radice di tutto il male.)

    
risposta data 30.06.2013 - 00:15
fonte

Leggi altre domande sui tag