Berriart Berriart

Desarrollo web con software libre

Mejorar un buscador, crear un “Quizá quiso decir”

Guardar este artículo en Delicious Compartir este artículo en Twitter Compartir este artículo en Facebook

No sé si alguna vez habéis creado un buscador con PHP, pero si lo habéis hecho, seguro que habéis querido hacer como Google y corregir a un usuario cuando se equivoca al hacer una búsqueda. Pero solo crear ese sistema puede convertirse en todo un proyecto y normalmente no vale la pena gastar todo ese tiempo.

Pero todo cambia cuando es otro el que crea ese sistema por ti y simplemente te deja utilizarlo. Es el caso de Yahoo, que pone a nuestra disposición su API Spelling Suggestion. Con esta API, podremos pedirle a Yahoo las sugerencias cuando alguien hace una búsqueda, y nos dará los resultados igual que los muestra en su buscador cuando una persona no escribe correctamente una palabra. Aunque existe el problema de que no se puede indicar el idioma, pero con lugares, nombres y palabras en inglés lo hace muy bien.

Podéis ver como se usa en su propia página, pero lo tenéis más sencillo si os bajáis la clase para php que he creado: Spelling Suggestion Class. Su uso es muy sencillo, aunque es necesaria una ID de aplicación de Yahoo, y se puede usar de las siguientes maneras:

1. Obtener la palabra sugerida directamente:

// Crear el objeto
$spellingSuggestion = new spellingSuggestion();
// Indicar tu ID de aplicación
$spellingSuggestion->appid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// Mostrar la palabra sugerida
echo $spellingSuggestion->getSuggestedWord( 'jon lenon' );
// La salida debería ser 'john lennon'

2. Obtener directamente la respuesta de Yahoo:

// Crear el objeto
$spellingSuggestion = new spellingSuggestion();
// Indicar tu ID de aplicación
$spellingSuggestion->appid = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// Seleccionar el modo de salida
$spellingSuggestion->setOutput( 'xml' ); // json xml php
// Hacer la consulta
$spellingSuggestion->search('jon lenon');
// Mostrar la respuesta
echo $spellingSuggestion->response;
//La respuesta debería ser:
<ResultSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:yahoo:srch" xsi:schemaLocation="urn:yahoo:srch
http://search.yahooapis.com/WebSearchService/V1/WebSearchSpellingResponse.xsd">
	<Result>john lennon</Result>
</ResultSet>

Descargar la clase para php Spelling Suggestion Class
Demo de la clase.

6 Comentarios
  1. Mario

    Me ha parecido muy muy interesante, desconocía esa API. Vas de cabeza a webeame ;)

  2. Patricio

    Muy bueno! Le haria un solo cambio, en la linea 83, dice:

    return “”;

    Pondría

    return $this->query;

    Porque si esta bien escrito, que me lo deje bien escrito en vez de no darme nada :)

  3. afri

    mis niñas
    quizás quiso decir:
    afrii,luciia,estefa,mary,lala,cuxii

Deja un comentario

Trackbacks
  1. [...] Interesante clase PHP que utiliza el API Spelling Suggestion de Yahoo para poder devolver un “Quizás quiso decir…” al hacer una consulta. Demo [...]

  2. [...] Interesante clase PHP que utiliza el API Spelling Suggestion de Yahoo para poder devolver un “Quizás quiso decir…” al hacer una consulta. Demo [...]