İçeriğim için Elasticsearch ile bir A - Z navigasyonu uygulamaya çalışıyorum. İhtiyacım olan şey, örn. a, b, c, ... vbElasticsearch, "first with words" ifadelerinde ilk kelime ile başlar
denedim:
"query": {
"match_phrase_prefix" : {
"title" : {
"query" : "a"
}
}
}
dize içinde bir kelime ile başlar nerede ayrıca, sonuçlarını görüntülemek yukarıda bahsedilen sorgu. Örnek:
"başlığı": "Apfelpfannkuchen",
"başlığı": "Affogato",
"başlığı": "Kalbsschnitzel bir n bir seto balsamik",
Sadece İLK kelimesinin a ile başladığını ifade etmek istiyorum.
İşte haritalama kullandığım: Varsayılan eşleme kullanıyorsanız o zaman sizin için çalışmaz$params = array(
'index' => 'my_index',
'body' => array(
'settings' => array(
'number_of_shards' => 1,
'index' => array(
'analysis' => array(
'filter' => array(
'nGram_filter' => array(
'type' => 'nGram',
'min_gram' => 2,
'max_gram' => 20,
'token_chars' => array('letter', 'digit', 'punctuation', 'symbol')
)
),
'analyzer' => array(
'nGram_analyzer' => array(
'type' => 'custom',
'tokenizer' => 'whitespace',
'filter' => array('lowercase', 'asciifolding', 'nGram_filter')
),
'whitespace_analyzer' => array(
'type' => 'custom',
'tokenizer' => 'whitespace',
'filter' => array('lowercase', 'asciifolding')
),
'analyzer_startswith' => array(
'tokenizer' => 'keyword',
'filter' => 'lowercase'
)
)
)
)
),
'mappings' => array(
'tags' => array(
'_all' => array(
'type' => 'string',
'index_analyzer' => 'nGram_analyzer',
'search_analyzer' => 'whitespace_analyzer'
),
'properties' => array()
),
'posts' => array(
'_all' => array(
'index_analyzer' => 'nGram_analyzer',
'search_analyzer' => 'whitespace_analyzer'
),
'properties' => array(
'title' => array(
'type' => 'string',
'index_analyzer' => 'analyzer_startswith',
'search_analyzer' => 'analyzer_startswith'
)
)
)
)
)
);
ile başlayan tüm yayın başlığı dönecektir. – Roopendra
Bu elasticsearch2 gibi görünüyor, bunu etiketleyebilir misiniz? –