Ich bin ein Neuling für elasticsearch und wir bewerten elasticsearch für unseren Webshop. Ein wichtiges Merkmal ist die Verwendung von Synonymen. Leider kann ich keinen Index mit Synonymen erstellen. Bitte kann mir jemand helfen, wie ich das Synonym-Feature nutzen kann. Ich habe für diese Funktion und elasticsearch 2.xx keine Probe gefunden. Das Ziel sollte sein, wenn ich nach Hills suche, wird der Eintrag von Royal gefunden.ElasticSearch Nest Synonyme 2.XX
Ich verwende den folgenden Code ein:
private ElasticClient GetClient()
{
var node = new Uri(ES_URI);
var uri = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(uri).DefaultIndex("product");
var client = new ElasticClient(settings);
return client;
}
public void CreateSynonymIndex()
{
Product product = new Product()
{
Id = "2",
ProductName = "Royal",
Description = "Katzenfutter für Nierkranke"
};
var client = GetClient();
client.DeleteIndex("product");
var syn = new[] { "royal, hills => royal" };
ICreateIndexResponse respose = client.CreateIndex("product", c => c
.Mappings(mp => mp.Map<Product>(d => d.
Properties(p => p.String(n => n.Name(name => name.ProductName).Index(FieldIndexOption.Analyzed)))))
.Settings(s => s
.Analysis(an => an
.Tokenizers(at=>at.Pattern("synonymTokenizer",pa=>pa.Pattern("Test")))
.Analyzers(a=>a.Custom("synonymAnalyser",ca =>ca
.Tokenizer("synonymTokenizer")
.Filters(new List<string> { "synonym" })))
.TokenFilters(tf => tf
.Synonym("synonym", sy => sy.Synonyms(syn)
.Tokenizer("whitespace")
.IgnoreCase(true)))))
);
client.Index(product);
}
public void ES_Search()
{
var client = GetClient();
var response = client.Search<Product>(search => search
.Query(q => q.Bool(b => b
.Should(
// s => s.Match(m => m.Query("sometest").Field(f => f.ProductName).Boost(1.1)),
s => s.Match(m => m.Query("hills").Field(f => f.ProductName).Fuzziness(Fuzziness.EditDistance(1)))
))));
var response1 = client.Search<Product>(s => s.Query(q => q.Term(p => p.ProductName, "hills")));
}
Grüße,
Dominik
Verwenden Sie NEST 2.x? – Rob
Hallo, ich benutze NEST V 2.4.6. Ich brauche ein funktionierendes Beispiel für die Suche mit Synonymen. – ROEMING