Ich verwende:django-Heuhaufen zur automatischen Vervollständigung funktioniert nicht wie es sollte
Django : 1.7.1
django-haystack : 2.4.1
- und
elastic search 2.x
als Motor
Index Klasse
class WarehouseIndex(SearchIndex, Indexable):
"""
SearchIndex Class that stored indexes for Model Warehouse
"""
text = CharField(document=True, use_template=True)
search_auto = EdgeNgramField()
search_auto2 = NgramField()
....
def get_model(self):
return WareHouse
def prepare(self, obj):
self.prepared_data = super(WarehouseIndex, self).prepare(obj)
search_auto = [obj.name, obj.sublocality,
obj.locality, obj.city]
self.prepared_data['search_auto'] = ' '.join(
[x.lower() for x in search_auto if x is not None])
self.prepared_data['search_auto2'] = ' '.join(
[x.lower() for x in search_auto if x is not None])
return self.prepared_data
Ich habe den Index rebuild_index und Ausführen des folgenden Codes in der Schale
>>> from haystack.query import SearchQuerySet, SQ
>>> sqs = SearchQuerySet().models(WareHouse)
>>> sqs.filter(search_auto='pond') # query 1
[]
>>> sqs.filter(search_auto2='pond') # query 2
[]
>>> sqs.filter(search_auto__startswith='pond') # query 3
[<SearchResult: base.warehouse (pk=u'1')>, <SearchResult: base.warehouse (pk=u'22')> ...]
>>> sqs.filter(search_auto2__startswith='pond') # # query 4
[<SearchResult: base.warehouse (pk=u'1')>, <SearchResult: base.warehouse (pk=u'22')> ...]
bauen, wie Sie Abfrage 1 und 2 gibt „kein Ergebnis“ Abfrage 3 und 4 gibt „gleiche Ergebnis“ sehen können, auch wenn seach_auto und search_auto2 unterscheiden sich beide vom Feldtyp EdgeNgramField und NgramField.
EDIT: Index mapping, Index Setting
EDIT: auf futhere Inspektion bemerkt habe, dass Heuhaufen mein EdgeNgramField und NgramField als CharField behandelt - hier sind die term vectors, beide sind gleiche
EDIT: Bei einer weiteren Inspektion I gefunden haystack/backend/elasticsearch_backend.py
wurde stumm Parsen elasticsearch.exceptions.RequestError
(full trace here) beim Versuch, die Zuordnung für den Index einzurichten.
Warum wird mein Index nicht ordnungsgemäß erstellt? Was mache ich falsch?
Können Sie die Ausgabe von 'curl -XGET localhost: 9200/your_index' teilen? – Val
@Val - Ich habe einen Link zum Mapping hinzugefügt. – Crazyshezy
Ich müsste auch die Indexeinstellungen sehen. Es sieht jedoch so aus, als ob Ihre Zuordnung grundlegend ist (d. H. Alle Standardtypen) und in Ihren Feldern kein benutzerdefinierter Analysator (Ngram usw.) eingestellt ist. – Val