Tengo una instalación de postgres con Sphinx y cuando ejecuto la consulta quiero que se seleccionen primero los registros más relevantes. En otras palabras, primero quiero la siguiente consulta:
query="word1 & word2 & word3"
y luego, si nada seleccionado,
query="word1 | word2 | word3"
¿Cómo configurar sphinx para esas necesidades? La configuración de Sphinx es predeterminada
Bueno, https://github.com/andy128k/pg-sphinx dice
sphinx_select( /*index*/ varchar, /*query*/ varchar, /*condition*/ varchar, /*order*/ varchar, /*offset*/ int, /*limit*/ int, /*options*/ varchar)
Y de http://sphinxsearch.com/docs/current.html#sphinxql-select desea una cláusula de OPCIONES para cambiar la clasificación (una ranker
de clasificación)
http://sphinxsearch.com/docs/current.html#weighting
Entonces intentaría
sphinx_select(...., "word1 | word2 | word3", ..., "ranker=wordcount")
(editado para mostrar la consulta en su lugar también, ¡necesita la consulta OR para que esto funcione ! Ver comentarios arriba)
(ranker de recuento de palabras, es muy básico, pero debe cumplir con los criterios exactos que desea)
Pero puede jugar con expresiones personalizadas, no muy bien, pero comience...
sphinx_select(...., "ranker=expr('sum(word_count+hit_count+lccs+exact_order)+bm25')")
MUCHO más detalles... http://sphinxsearch.com/blog/2010/08/17/how-sphinx-relevance-ranking-works/