Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2011, 19:53
Avatar de xarmagedonx
xarmagedonx
 
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Ordenar resultados por keyword

Hola a todos!, estoy intentando que los resultados de mi buscador se ordenen por la posición de la frase buscada (keyword).

Por ejemplo: busco "Cerebro", entonces el primer resultado debería ser el que tenga la palabra "Cerebro" en su título, más adelante el que tenga la palabra en la descripción y finalmente el que la tenga entre sus keywords.

Logré encontrarlo en python pero mi buscador está desarrollado en php y mysql, les dejo a continuación el código que encontré sobre lo que les hablo:

Código:
class searcher:
def __init_ _(self,dbname):
self.con=sqlite.connect(dbname)
def __del_ _(self):
self.con.close( )
Código:
def getmatchrows(self,q):
# Strings to build the query
fieldlist='w0.urlid'
tablelist=''
clauselist=''
wordids=[]
# Split the words by spaces
words=q.split(' ')
tablenumber=0
for word in words:
# Get the word ID
wordrow=self.con.execute(
"select rowid from wordlist where word='%s'" % word).fetchone( )
if wordrow!=None:
wordid=wordrow[0]
wordids.append(wordid)
if tablenumber>0:
tablelist+=','
clauselist+=' and '
clauselist+='w%d.urlid=w%d.urlid and ' % (tablenumber-1,tablenumber)
fieldlist+=',w%d.location' % tablenumber
tablelist+='wordlocation w%d' % tablenumber
clauselist+='w%d.wordid=%d' % (tablenumber,wordid)
tablenumber+=1
# Create the query from the separate parts
fullquery='select %s from %s where %s' % (fieldlist,tablelist,clauselist)
cur=self.con.execute(fullquery)
rows=[row for row in cur]
return rows,wordids
Muchisimas gracias a todos!