Ruido aleatorio en la puntuación Solr
Pregunta
Estoy buscando una forma de introducir ruido aleatorio en mi función de puntuación, y no tengo pérdidas sobre cómo proceder mejor.
Algunos antecedentes:
Utilizamos SOLR para una aplicación web que administra grandes conjuntos de fotos para las agencias.
Un cliente tiene un requisito interesante para anotar:
- campo de 'calidad', mantenido por los editores, de 1 (más alto) a 3 (más bajo);
- Campo de 'Fecha', impulsando fotos más recientes; Probablemente usaría una función logarítmica;
Sin embargo, debido a cómo funciona el mercado de Stock Photo, esto probablemente dará como resultado muchas fotos similares que aparecen juntas. Su solicitud es darle a 'calidad' un gran impulso, pero introducir cierta aleatoriedad para que las fotos no aparezcan en un orden de fecha estricto.
¿Alguna idea?
Editado: un requisito clave es tener resultados de consulta "estables": si busco dos veces para "Tropical Island", puedo obtener un conjunto de resultados ligeramente diferente, pero si pido la primera página, entonces la segunda, la primera, I, I mejor obtener los mismos resultados :)
Solución 2
Resulta que mi primer enfoque para resolver el problema fue el correcto, y tuve un error de implementación trivial. En caso de que ayude a otros:
Randomsortfield tiene las características que necesito (es decir, devolver resultados repetibles para la misma consulta). Dejando a un lado la función de funciones por un momento, incluso algo trivial como:
sort=quality_i asc, date_d desc, random_12345 desc
se aproximará a mis requisitos.
Sin embargo, cuando se usa la gema Ruby Sunspot, no hay forma de pasar la semilla, y eso es lo que me estaba engañando antes: terminé usando una semilla diferente cada vez, obteniendo así resultados aleatorios "verdaderos".
Otros consejos
Podrías hacer esto con Functeries. Para cada foto, agregue un campo con un número aleatorio cercano a 1 (por ejemplo, 0.99, 1.02) y úselo en una consulta de función de producto para alterar la puntuación "natural".