Не удается получить идеальные результаты при использовании ngram

вот код на python, модель включает много внешних ключей. я не знаю как сделать точное соответствие. нам нужны точные результаты для примера instacart.com, этот сайт сделан с помощью elasticsearch.

documents.py:

PUBLISHER_INDEX.settings(
    number_of_shards=1,
    number_of_replicas=0,
    max_ngram_diff= 20 
)

html_strip = analyzer(
    'html_strip',
    tokenizer="standard",
    filter=["standard", "lowercase", "stop", "snowball"],
    char_filter=["html_strip"]
)

autocomplete_analyzer = analyzer('autocomplete_analyzer',
                tokenizer = tokenizer('trigram','nGram',min_gram=1,max_gram=7),
                filter=['lowercase']
)

@PUBLISHER_INDEX.doc_type
class NewsDocument(Document):
    
id = fields.IntegerField(attr='id')
# fielddata=True
code = fields.TextField(
    fields={
        'raw':{
            'type': 'keyword',
        }
        
    }
)
uom_id = fields.TextField(
    fields={
        'raw':{
            'type': 'keyword',
        }
    }
)
item_id= fields.NestedField(properties={
    'id' : fields.IntegerField(),
    'code' : fields.TextField(),
    'name' : fields.TextField(
        fields={
            'raw':{
            'type': 'keyword',
            }
        },
        analyzer = autocomplete_analyzer
    ),
    'barcode': fields.NestedField(),
    'qr_code': fields.NestedField(),
    'material_id': fields.NestedField(),
    'uom_id' : fields.NestedField(),
    'group_id': fields.NestedField(),
    'brand_id' : fields.NestedField(),
    'static_group' : fields.NestedField(),
    'image1' : fields.FileField(),
    'search_name':fields.TextField(),
    'display_name': fields.TextField(),
    'alternative_barcode': fields.NestedField(),
    'alternative_qrcode': fields.NestedField(),
    'alternative_rfid': fields.NestedField(),
    'status': fields.TextField(),
    'is_active' : fields.BooleanField(),
    'is_delete': fields.BooleanField(),
    'item_meta':fields.NestedField()
})
name = fields.TextField(
    fields={
        'raw': {
            'type': 'keyword',
            
        }
    },
    analyzer= autocomplete_analyzer
)

class Django(object):
    model = Variant

Получаю вывод, но не точный. как это исправить? вывод: введите описание изображения здесь

Вернуться на верх