Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-03-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question Consultas tipo Google

Bueno, no se si el título es adecuado, paso a explicar lo que quiero.

Quiero buscar la frase "Club Delphi". Necesito que el resultado me devuelva registros donde encuentre: club, delphi, club delphi, Club, Delphi, Club Delphi.

Ya he resuelto el tema de las mayúsculas/minúsculas, acentos; pero no doy con la forma de buscar frases.

Espero haberme explicado bien.

Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 12-03-2014
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Hola Santiago.

Con la clausula like no te funciona?

Saludos
Responder Con Cita
  #3  
Antiguo 12-03-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Wink

Cita:
Empezado por jafera Ver Mensaje
Hola Santiago.
Con la clausula like no te funciona?
Saludos
No, no alcanza. Lo explico mejor.

Tengo una tabla:
Código SQL [-]
nombres_libros
cod_libro: integer
nombre_libro: string
autor: string
cantidad_paginas: integer
editorial: string:
estado_libro: string
......

Uso Delphi XE5, Firebird 2.1.
Se presenta una ventana donde me deben devolver los libros que tengo, y los criterios de búsqueda son, por ejemplo: por nombre del libro, por nombre del autor.
Ahora bien, el tipo de busca un libro por autor: "Gabriel García Márquez"
Lo que quiero que la consulta devuelva son los registros que tengan autores con, por ejemplo: Gabriel García Márquez; Gabriel; Márquez; García, ...
Bajo este concepto, me tendría que devolver libros de Gabriel García Márquez, Gabriel Hurtado, Juan Márquez Linares, etc., etc.

Bueno, espero que ahora esté mejor explicado.

Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #4  
Antiguo 12-03-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.298
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tendrás que dividir en palabras antes de realizar la búsqueda y luego utilizar OR.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 12-03-2014
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
Hola de nuevo.

Comente lo del like ya que pensaba que buscabas por una parte de codigo determinado, al poner Gabr, te buscaria la cadena que contuviera Gabr, tanto Gabriel , como Gabrino, etc. Ahora si que con el ejemplo he visto realmente lo que quieres buscar.

Supongo que la respuesta de Neftali es la idonea, yo no he utilizado nunca una búsqueda así, la considero un poco ambigua ya que si buscas por Gabriel Garcia no le veo el porque te tiene que devolver Juan Marquez, diferente si buscaras Marquez que te devolviera todos.

En fin cada aplicación tiene sus entresijos y necesidades y estos los conoce solo el programador y quien le ha encargado el trabajo.

Seguiré atento al hilo por si puedo aprender algo nuevo para un futuro, nunca se sabe....

Saludos

Josep
Responder Con Cita
  #6  
Antiguo 12-03-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Cool

Cita:
Empezado por Neftali Ver Mensaje
Tendrás que dividir en palabras antes de realizar la búsqueda y luego utilizar OR.
Esta opción me gusta. Ahora bien. ¿Alguna función en Delphi que le pase una frase y me devuelva todas las palabras separaditas?

Que se yo:
Código Delphi [-]
var
  palabras:array of string;
begin
  palabras:=separar_palabras['Gabriel García Márquez'];
//Aquí tendría que obtener un array que contenga en cada componente una palabra.
end;
Pero creo que esto es un buen comienzo.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #7  
Antiguo 12-03-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Eso se llama "Full text search". FB no tiene soporte nativo, pero hay opciones:

http://stackoverflow.com/questions/9...ird-and-delphi

(Ahi mencionan a MUTIS, un proyecto mio pero ya esta muerto).

En cambio, con Sqlite / Postgres es trivial, ya que viene de fabrica. Seria muy facil de integrar sqlite (ya que es embeido).

Tengo un ejemplo en python, pero tiene los links con mas info:

http://runnable.com/Ur8myPOxx4hmAARP...query-and-fts4

Una explicacion del fundamento de todo esto:

https://www.tbray.org/ongoing/When/2...30/OnSearchTOC

https://en.wikipedia.org/wiki/Search_engine_indexing

(En especial, el indice invertido y el de sufijo).

P.D: El sitio de firebird enlaza aun tutorial de como hacer una implementacion de FTS:

http://www.firebirdfaq.org/faq328/
__________________
El malabarista.

Última edición por mamcx fecha: 12-03-2014 a las 19:01:04.
Responder Con Cita
  #8  
Antiguo 12-03-2014
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por santiago14 Ver Mensaje
¿Alguna función en Delphi que le pase una frase y me devuelva todas las palabras separaditas?
Código Delphi [-]
var
  palabras:array of string;
begin
  palabras:=separar_palabras['Gabriel García Márquez'];
end;
Sobre esto encontrarás muchos ejemplos tanto en Club Delphi como en el resto de la Red. En caso de usar GHF, cuentas con la función ghSplit:
Código Delphi [-]
Var
  Palabras :TStringDynArray;  // De la unidad "Types" de Delphi
Begin
  Palabras := ghSplit ('Gabriel García Márquez');
Tiene la ventaja de que ignora los espacios que aparezcan de forma consecutiva. NOTA: Tengo pendiente optimizar el código de esta función (actualmente no me gusta).
Responder Con Cita
  #9  
Antiguo 13-03-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.298
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por santiago14 Ver Mensaje
Esta opción me gusta. Ahora bien. ¿Alguna función en Delphi que le pase una frase y me devuelva todas las palabras separaditas?
Es posible que la clase TStringList y las propiedades DelimiterText y Delimiters de dicha clase te puedan ayudar en eso.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 13-03-2014
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.298
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por santiago14 Ver Mensaje
Lo que quiero que la consulta devuelva son los registros que tengan autores con, por ejemplo: Gabriel García Márquez; Gabriel; Márquez; García, ...
Bajo este concepto, me tendría que devolver libros de Gabriel García Márquez, Gabriel Hurtado, Juan Márquez Linares, etc., etc.
El hecho de encontrar 1,2,3... elementos de los que se buscas, también te puede servir a posteriori (no se si es el caso y te puede ser útil) para devolver losresultados con una determinada prioridad. Un resultado que tenga 2 elementos coincidentes deberías aparecer con mayor prioridad que otro que sólo tenga 1.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
APORTE - Buscador de palabras Tipo Google Caroso Varios 8 05-10-2013 03:10:52
Mapa tipo google MAXIUM Gráficos 7 06-01-2009 02:51:28
'¿Cuentas de email IMAP Gratuitas tipo google o yahoo.? JXJ Varios 4 09-09-2008 17:12:24
TEdit tipo Google, se puede??? NeoAnderson API de Windows 1 19-04-2008 17:08:46
Aplicación con buscadores tipo google o yahoo santiago14 SQL 5 14-02-2007 01:53:36


La franja horaria es GMT +2. Ahora son las 12:23:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi