Ich wollte durch die django-Sphinx documentation, und es sieht aus wie Sie die Suchergebnisse filtern können mit , AttributeDjango-Sphinx Ergebnis Filterung mit Attributen?
queryset = MyModel.search.query('query')
results1 = queryset.order_by('@weight', '@id', 'my_attribute')
results2 = queryset.filter(my_attribute=5)
results3 = queryset.filter(my_other_attribute=[5, 3,4])
results4 = queryset.exclude(my_attribute=5)[0:10]
Von einigen Beispielen scheinen diese Attribute etwas, das Sie in der Sphinx angeben werden Konfigurationsdatei, anstatt tatsächliche Spaltenwerte in der Tabelle zu sein. Die Konfigurationsdatei kann so etwas,
# ForeignKey's
# Apparently sql_group_column is now replaced by sql_attr_uint
sql_group_column = country_id
sql_group_column = state_id
sql_group_column = listings
# DateField's and DateTimeField's
sql_date_column = date_added
Aber es stellt sich heraus, dass Sie nur Fremdschlüssel als dieser Wert angeben. Wie in another example dargestellt,
Class City(models.Model):
...
# Comment: The below should probly be country_id and state_id
country_id = models.ForeignKey(Country)
state_id = models.ForeignKey(State, blank=True, null=True)
listings = models.PositiveIntegerField(editable=False, default=0)
Wenn das Suchergebnis gedruckt wird, erhalten Sie,
print results[0]._sphinx
{'id': u'5246', 'weight': 200, 'attrs': {'state_id': 3, 'country_id': 0}}
Wie Sie sehen können, in attrs - state_id und country_id - wobei FKs, zeigen. Aber Angebote nicht.
Und hier liegt mein Problem. Wenn ich meine Sphinx-Suchergebnisse mit einer Aribtrary-Spalte foo in meinem Modell filtern möchte - wie würde ich das machen?
Danke!
bearbeiten
In Antwort auf Van Gale,
Ich verwende sql_attr_uint eigentlich eher als sql_group_column hier .. und wie ich im Beispiel oben erwähnt .. auch das Beispiel des Autors von Django Sphinx (link oben) zeigt nicht das Attribut im _Sphinx dict, wenn es nicht ein FK ist .. (Siehe die "Wie Sie sehen" Aussage oben). Auch ich habe bereits die SQL_Query Zeichenfolge zu .. es wählt alle Spalten in meiner Tabelle .. (individuell, nicht *)
Haben Sie eine Lösung für dieses Problem erhalten? Ich stecke sie fest ... –