Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717

    Ordinare record in base alla presenza di alcune parole in determinati campi

    Ho messo un titolo lungo speriamo si capisca .

    Dunque ho un problema per stabilire l'ordinamento di una query.
    Ho una tabella su cui ho caricato indirizzi di pagine web, con i propri titoli, descrizioni e keywords. Quando effettuo la ricerca su questa tabella la effettuo su quattro campi (titolo, descrizione, keywords e url) con una query di tipo like, ad esempio se ricerco cane:
    codice:
    SELECT * 
      FROM tabella
     WHERE Titolo LIKE '%cane%'
        OR Descrizione LIKE '%cane%'
        OR Keywords LIKE '%cane%'
        OR Url LIKE '%cane%'
    La cosa che mi è stata chiesta è di ordinare i record risultanti secondo una determinata scala, ossia hanno più importanza i record che contengono la parola (o le parole) cercate in tutti e quattro i campi, e via via tutti gli altri.

    Io avevo pensato di attribuire un peso ad ogni record del tipo:
    codice:
    Titolo      : 1000
    URL         :  100
    Descrizione :   10
    Keywords    :    1
    e sommando questi riesco a ricavare l'importanza del sito.

    Come posso fare per ordinare la query in questo modo?

    Utilizzo SQL Server 2000.

    Grazie a tutti, ciao.
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

  2. #2
    penserei a una cosa del genere
    codice:
    SELECT * FROM 
    (
      SELECT 1000 AS peso_peso, * FROM tabella WHERE Titolo LIKE '%cane%'
        UNION
      SELECT 100 AS peso_peso, * FROM tabella WHERE Url LIKE '%cane%'
        UNION
      SELECT 10 AS peso_peso, * FROM tabella WHERE Descrizione LIKE '%cane%'
        UNION
      SELECT 1 AS peso_peso, * FROM tabella WHERE Keywords LIKE '%cane%'
    )
    ORDER BY peso_peso DESC
    prova...

  3. #3
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717
    Ora devo andare domani mattina ci provo e ti faccio sapere, ciao
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

  4. #4
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717
    La query mi duplica i valori e poi non soddisfa a pieno le condizioni.

    In pratica facendo una ricerca per 'cane' se un sito contiene le parola in tutti e quattro i campi (titolo, url, descrizione, keywords) il peso dovrebbe essere 1000 + 100 + 10 + 1 = 1111, quindi il massimo di importanza.

    Almeno questa è l'idea che mi ero fatto ma non trovo un modo di farlo con sql server .

    Cmq grazie dell'attenzione, se avete suggerimenti io sono qui che aspetto.

    ciao.
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

  5. #5
    usare una SUM per fare la somma?

  6. #6
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717
    Originariamente inviato da optime
    usare una SUM per fare la somma?
    si stavo pensando ad un raggruppamento e ad ordinare per sum(peso)... ma tu che dici, in termini di velocità perde molto?
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

  7. #7
    Utente di HTML.it L'avatar di jesus
    Registrato dal
    Jan 2002
    Messaggi
    717
    Funziona, anche se appare più lenta di una query classica.

    Grazie mille dell'aiuto.
    <%= Jesus %>
    "Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna" - Albert Einstein.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.