django-esfinge es una capa que funciona al igual que el ORM de Django hace, excepto que trabaja en la parte superior del motor de búsqueda de texto completo Esfinge.
Por favor Nota: Usted tendrá que crear sus propios índices esfinge esfinge e instalar en su servidor para utilizar esta aplicación.
Allí ya no habrá liberación paquetes disponibles. Utilice SVN a la comprobación de la última versión del tronco, ya que siempre debe ser estable y actual.
Instalar:
Para instalar la última versión estable:
sudo easy_install djangosphinx
Para instalar la última versión de desarrollo (actualizado con bastante frecuencia):
svn checkout http://django-sphinx.googlecode.com/svn/trunk/ django-esfinge
cd django-esfinge
sudo python setup.py install
Nota: Usted tendrá que instalar el paquete sphinxapi.py en su trayectoria Python o utilizar una de las versiones incluidas. Para utilizar la versión incluida, debe especificar lo siguiente en su archivo settings.py:
# Esfinge 0.9.9
SPHINX_API_VERSION = 0x116
# Esfinge 0.9.8
SPHINX_API_VERSION = 0x113
# Esfinge 0.9.7
SPHINX_API_VERSION = 0x107
Uso:
El siguiente es un poco de ejemplo de uso:
MyModel clase (models.Model):
& Nbsp; search = SphinxSearch () # opcionales: por defecto db_table
& Nbsp; # Si su nombre de índice no coincide MyModel._meta.db_table
& Nbsp; # Nota: Sólo puede generar configuraciones automáticas de la secuencia de comandos ./manage.py
& Nbsp; # si su nombre de índice coincide.
& Nbsp; search = SphinxSearch ('index_name')
& Nbsp; # O tal vez queremos ser más específico ..
& Nbsp; searchdelta = SphinxSearch (
& Nbsp; index = 'delta_name index_name',
& Nbsp; pesos = {
& Nbsp; "nombre": 100,
& Nbsp; "descripción": 10,
& Nbsp; "etiquetas": 80,
& Nbsp;}
& Nbsp;)
queryset = MyModel.search.query ('consulta')
resultados1 = queryset.order_by ('@ de peso', 'id', 'my_attribute')
resultados2 = queryset.filter (my_attribute = 5)
resultados3 = queryset.filter (my_other_attribute = [5, 3,4])
resultados4 = queryset.exclude (my_attribute 5 =) [doce y diez]
resultados5 = queryset.count ()
# Como de 2.0 ahora se puede acceder a un atributo para obtener los argumentos de peso y similares
para el resultado en resultados1:
& Nbsp; resultado de la impresión, result._sphinx
# También se puede acceder a un conjunto similar de metadatos en la propia queryset (una vez que ha sido cortada o ejecuta en cualquier forma)
results1._sphinx impresión
Algunos métodos adicionales:
& Nbsp; * count ()
& Nbsp; * extra () (se pasa al queryset)
& Nbsp; * todos () (no hace nada)
& Nbsp; * select_related () (se pasa al queryset)
& Nbsp; * group_by (campo, campo, campo)
& Nbsp; * set_options (índice = '', pesos = {}, pesos = [])
La capa django-esfinge también es compatible con algunas de consulta básica sobre varios índices. Para utilizar este primero tiene que entender las reglas de una UNION. Sus índices deben contener exactamente los mismos campos. Estos campos también deben incluir una selección content_type que debería ser el id content_type asociado a esa tabla (modelo).
A continuación, puede hacer algo como esto:
SphinxSearch ('index1 index2 index3'). Consulta ('hola')
Esto devolverá una lista de todos los partidos, ordenados por peso, de todos los índices. Esto realiza una consulta SQL por índice con partidos en el mismo, como ORM de Django no soporta UNION SQL
Requisitos .
- Django
- Python
Comentarios que no se encuentran