ElasticSearch kullanıyoruz ve boşluk içeren terimleri ararken bazı sorunlar yaşıyoruz. Somut bir örnek: JM Bruno adında bir kişi var, ama bunu ararken hiçbir sonuç geri dönülmez. Belirsiz bir terimi aramayı hatırlıyorum sonuca geri dönmüştüm ama şu anda bunu tekrarlayamıyorum.ElasticAralıklarla arama terimleri
Çok fazla şans olmadan, belirteç düzenleyicime "\" yanı sıra bir alan eklemeyi denedim. ES ayarları
module Search
def self.included base
base.send :include, Tire::Model::Search
base.send :include, Tire::Model::Callbacks
base.class_eval do
settings analysis: {
filter: {
ngram: {
type: 'nGram',
max_gram: 12,
min_gram: 3
},
url_stop: {
type: "stop",
stopwords: %w[http https]
}
},
tokenizer: {
url_email_tokenizer: {
pattern: '[^\w\-\[email protected]]+',
type: 'pattern'
}
},
analyzer: {
url_analyzer: {
tokenizer: "url_email_tokenizer",
filter: %w[url_stop ngram],
type: "custom"
},
name_analyzer: {
tokenizer: 'url_email_tokenizer',
filter: 'ngram',
type: 'custom'
}
}
}
end
end
end
Biz de alan adları ve e-posta adresleri aramak için bu tokenizers kullanmak (bir Ruby on Rails uygulamada Lastik mücevher kullanarak) şunlardır.
çok serin 'analizörü bulamayan' bu bir göz atın kurulum gerekir. Analizörler söz konusu olduğunda, Lastik gemindeki ayarlar için kullandığımın farkında değil mi? – HannesFostie
MyModel.index.analyze "Metnim", analyser deneyin: "name_analyzer" – karmi
anladım indeksi eklemek gerekiyordu, ama yanıt benim için çok şey ifade etmiyor. Elbette, ngram tarafından simgelenmesini beklediğim gibi bir demet belirti bulur, ancak bu aramada neden bulunmadığını açıklamıyor (en azından bana açık değil) – HannesFostie