Pregunta

asume que soy la indexación de una mesa de libros. Tienen título, autor, descripción, etc.

Quiero hacer una búsqueda en todos los campos y devolver el título de los libros que contienen mi término de búsqueda. Puedo hacer una búsqueda y devolver el book_id (doc_id) de Sphinx para que pueda mirar hacia arriba a mí mismo, pero lo que sería realmente impresionante es que si Sphinx sólo me dio los títulos así que no tengo que golpear la base de datos en absoluto. Puedo conseguir Sphinx para volver atributos diferentes a mí, pero conseguir un campo de texto me está eludiendo.

¿Es esto posible? Si es así, ¿cómo lo haces?

[Actualización] encontrado esto hoy: http://www.sphinxsearch.com/ faq.html # filas de almacenamiento

¿Fue útil?

Solución

El odio para matar la idea tan rápidamente, pero no es posible. Sphinx no devuelve ninguna información sobre los valores de los campos, ni siquiera los campos que proporcionan un partido en la consulta.

Y para profundizar un poco más ... Sphinx generalmente cargas todos los valores de atributo en la memoria, que es probablemente por eso que es muy bien con devolverlos para cada resultado. Podría ser que los campos se almacenan en una codificación no reversible, por lo que no se pueden traducir de nuevo a los valores normales? Esa es una puñalada en la oscuridad, sin embargo.

Otros consejos

Hay algún truco es. Como contesto antes , se podría añadir estos columna que desea conseguir a la attr entradas, a continuación, que solo recoger el valor del resultado de la esfinge.

Que sea útil para usted: D

En caso de que tenga una pequeña cantidad de datos en los campos de texto, puede utilizar atributos de cadena Sphinx.

sql_attr_string

Pero, tiene algunas limitaciones como:

  

Los atributos de cadena pueden almacenar cadenas arbitrarias adjuntos a cada   documento. Hay un límite de tamaño fijo de 4 MB por valor. Además, searchd   Actualmente depositará todos los valores en la memoria RAM, que es un adicional   límite implícito.

Por lo tanto, no sería buena idea para almacenar una gran cantidad de datos en ellos, porque todos los atributos se almacenan en la memoria RAM.

Ha habido algunos avances en este frente. Ahora, si se utiliza SphinxSE , puede unirse a la mesa SphinxSE la que usted busca en a la tabla que se generó el índice en, y obtener el título de esa manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top