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

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.

Comentarios

  • Mario

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

  • http://www.dejamedejoder.com.ar 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 :)

  • http://google afri

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

  • http://www.creacionweb.cl cristobal finger