Tengo una aplicación (.net core + ReactJS) que tengo que descifrar y hacer un mod, pero descubrí que usa muchas tecnologías con las que no estoy familiarizado, en este caso, ElasticSearch. Actualmente, una búsqueda de un término Micro no devolverá nada, porque aparentemente está buscando una coincidencia exacta, pero lo que estoy tratando de lograr es que una búsqueda de Micro debería devolver Microsoft, MicroStrategy... y cualquier cosa que contenga "micro" en el nombre, ¿cómo logro eso en el siguiente código? Traté de investigar un poco, veo cosas como ngram, Analyzer, query_string o QueryString... no tengo idea de por dónde empezar. Por favor ayuda.
public SearchDescriptor<ProductRecord> BuildSearchDescriptor( string productType, string name, int page , int pageSize , Dictionary<string, List<string>> filters) { ValidateProductType(productType); var collection = ProductTypeToCollection[productType]; var searchDescriptor = new SearchDescriptor<ProductRecord>() .Index(collection) .From(page * pageSize) .Size(pageSize) .Query(q => q .Bool(bq => bq .Must(m => m .MultiMatch(c => c .Query(name) .Fields(ff => ff .Field(f => f.Product, boost: ProductBoost) .Field(f => f.Manufacturer, boost: ManufacturerBoost) .Field(f => f.Version) .Field(f => f.Id, boost: 50) ) .Type(TextQueryType.CrossFields) //.Type(TextQueryType.BestFields) )) .Filter(fq => AddFilters(fq, filters)) ) ) .Sort(ss => ss .Descending(SortSpecialField.Score) .Ascending(p => p.Product.Suffix("keyword")) .Ascending(p => p.Manufacturer.Suffix("keyword")) .Descending(p => p.Version.Suffix("keyword")) /*.Script(sc => sc .Type("number") .Descending() .Script(script => script .Source("doc['VERSION'].value"))) */ ); return searchDescriptor; } }