5

Milyonlarca etiket içinde arama yapmak için ElasticSearch kullanıyoruz. Kullanıcılarımız, boolean operatörlerini (+, -, "xy", AND, OR, parantez) ekleyebilmelidir. Hiçbir isabet iade edilmezse, ES tarafından sağlanan bir yazım önerisine geri dönüp tekrar arama yaparız.ElasticSearch'te ifade sorguları için bulanıklık nasıl etkinleştirilir

$ curl -XGET 'http://127.0.0.1:9200/my_index/my_type/_search' -d ' 
{ 
    "query" : { 
     "query_string" : { 
      "query" : "some test query +bools -included", 
      "default_operator" : "AND" 
     } 
    }, 
    "suggest" : { 
     "text" : "some test query +bools -included", 
     "simple_phrase" : { 
      "phrase" : { 
       "field" : "my_tags_field", 
       "size" : 1 
      } 
     } 
    } 
} 

yerine sadece yazım önerilerine karşı son çareleri belirtmek nedeniyle, bulanık eşlemeyi etkinleştirmek istiyorum: Bu bizim sorgu var. Örneğin, bir kullanıcı "stackoverfolw" için arama yaparsa, ES "stackoverflow" için eşleşmeleri döndürmelidir.

Ek soru: Yazım hataları "düzeltiliyor" için daha iyi performans yöntemi nedir? Şimdi olduğu gibi, önce orijinal arama terimiyle, daha sonra ES tarafından önerilen terimle, iki müteakip istek gerçekleştirmeliyiz.

cevap

4

query_string bazı bulanıklıkları destekliyor, ancak yalnızca sizin kullanım alanınız olmadığını düşündüğüm ~ operatörünü kullanırken. O zaman bir fuzzy query ekler ve onu varolan query_düğmesi ile ekleyebilirim. Örneğin, bool query'u kullanabilir ve özgün sorgu_string'i şart koşulu olarak tutarak, fuzzy sorgusunu bir yan tümce olarak ekleyebilirsiniz.

Yazım hatalarının nasıl düzeltileceğiyle ilgili ek sorularınız için: Kullanıcıların bir listeden doğru düzeltmeyi seçmesini istiyorsanız, bunları otomatik olarak düzeltmek için iki ayrı soruyu kullanırım. Yaklaşımınız da iyi geliyor.

+0

Teşekkürler - bu benim düşüncelerimi onaylıyor. Her neyse, sahip olduğumuz şeye bağlıyız. Daha hızlı bir yaklaşım gibi görünüyor. "Bulanık sorgu" ile ilgili olarak, ElasticSearch dokümanlar bile iyi ölçeklenebilir olmadığına dair bir uyarıdan söz ediyorlar. –