Estoy haciendo una búsqueda de Sphinx pero obteniendo resultados realmente extraños. Cualquier ayuda es apreciada.Sphinx PHP search
Así por ejemplo, si escribo "50", me sale:
- 50 Cent
- 50 leones
- 50 Foot Wave, etc.
Esto es muy bueno, pero cuando busco "50 Ce", obtengo:
- Ryczące Dwudziestki
- Spisek
- Bernhard Gal
- Cowabunga Go-Go
y otros resultados locos. También cuando busco "50 Cent", el resultado correcto está en la parte superior, pero luego aparecen resultados aleatorios a continuación. ¿Alguna idea de por qué?
código PHP:
$query = $_GET['query'];
if (!empty($query))
{
$sphinx->SetMatchMode(SPH_MATCH_ALL);
$sphinx->AddQuery($query, 'artists');
$sphinx->AddQuery($query, 'variations');
$sphinx->SetFilter('name', array(3));
$sphinx->SetLimits(0, 10);
$result = $sphinx->RunQueries();
echo '<pre>';
switch ($result)
{
case false:
echo 'Query failed: ' . $sphinx->GetLastError() . "\n";
break;
default:
if ($sphinx->GetLastWarning())
{
echo 'WARNING: ' . $sphinx->GetLastWarning() . "\n";
}
if (is_array($result[0]['matches']) && count($result[0]['matches']))
{
foreach ($result[0]['matches'] as $value => $info)
{
$artist = artistDetails($value);
echo $artist['name'] . "\n";
}
}
}
}
Índice Esfinge y Fuente:
source artists
{
type = mysql
sql_host = localhost
sql_user = user
sql_pass = pass
sql_db = db
sql_port = 3300
sql_query = \
SELECT \
id, name \
FROM artists;
#UNIX_TIMESTAMP(time)
#sql_attr_uint = group_id
#sql_attr_timestamp = time
sql_query_info = SELECT id,name FROM artists WHERE id=$id
}
index artists
{
source = artists
path = /var/sphinx/artists
docinfo = extern
charset_type = utf-8
}
Las palabras no pueden describir mi agradecimiento :) – James
Esto es fantástico. No estoy seguro de si esto solo es cierto para las versiones más nuevas de Sphinx o no, pero es posible que no necesites configurar 'enable_star = 1'. No modifiqué el valor predeterminado y mis consultas funcionaron igual. Además, para la mayoría de los casos de uso (no este) creo que tener un 'min_prefix_len' menor que 4 puede ser innecesario. Si alguien puede comentar sobre el rendimiento aquí, estaría muy agradecido. –
Ignora lo que dije sobre 'min_prefix_len'. Para el autocompletado de búsqueda, estoy descubriendo que hace maravillas tenerlo configurado en 2. –