2012-06-06 19 views
5

Bir müşterim için Elastik ara değerlendiriyorum. API ile oynamaya başladım ve başarılı bir şekilde bir endeks oluşturdum ve aramaya yeni belgeler ekledim. Elastik Arama'nın kullanılmasının temel sebebi, faset işlevselliği sağlamasıdır.Elastik ara Analiz ve Façetalar

Ben sorun anlayarak Analizörler, Tokenizers ve Filtreler yaşıyorum ve nasıl yönleri ile uyum yoktur. Anahtar kelimeleri, tarihleri, arama terimlerini, vb.

benim arama içine Analyzers birleşmeyle ilgili gider ve bunu yönüyle nasıl nasıl kullanabilirim?

cevap

9

Elastic Search bir dizgiyi varsayılan olarak dizine eklediğinde, genellikle bunları tokenlere ayırır, örneğin: "Fox, duvarın üzerinden atla", "Fox", "jump", "over" gibi tek tek kelimelerle belirtilir. , "duvar".

Yani bu ne yapıyor? Belgelerinizi Lucene Sorgusu'nu kullanarak arayacak olursanız, istediğiniz dizeyi alamayabilirsiniz çünkü Elastic Search otomatik olarak tüm dizgenin yerine jetonize edilmiş kelimeleri arar, böylece arama sonuçlarınız ciddi şekilde etkilenir. Eğer "duvarın üzerinden Fox atlama" için arama eğer

Örneğin, size herhangi bir sonuç almazsınız. Bunun yerine "Fox" aranması size bir sonuç verecektir.

API Analiz veya terim entire üzerinde istatistiksel yönleriyle yapmak istediğinizde düzgün özellikle yararlı olan tam dizeleri için arama böylece , endeksli dize tokenize için değil Elastik Arama söyler analiz Teller.

Tokenlayıcılar sadece dizeleri tek tek sözcüklerle belirtmek ve bunları Elastic Search'te saklamak. Belirtildiği gibi, bu belirteçler Arama API'sı kullanılarak sorgulanabilir.

Filtreler Belirttiğiniz belirli koşullar altında sorgulanan sonucunuzun bir alt kümesini oluşturun, böylece arama sonuçlarınızda gerek duymadığınızdan gerekeni ayırmanıza yardımcı olun.

+0

"Fox duvarın üzerinden zıplayarak" yapabilir ve bir sorgu olarak yaparsanız doğru sonuçları size döndürür: client.prepareSearch(). SetQuery (QueryBuilders.matchQuery (NODE_PATH_TO_SEARCH) "Fox duvarın üzerinden atlamak")). Benim için sorgu dizesinde geçen kelimelere dayalı AND sonuçları görünüyor – Adrian