Filmler ve dizilerden oluşan bir veritabanımız var ve veriler çeşitli güvenilirlik kaynaklarından geldiği için, bölümlerin başlıklarında bulanık dize eşleştirmesi yapmak istiyoruz. Bizim uygulamada arama için Solr kullanıyoruz, ancak varsayılan eşleme mekanizmaların-gramlar Solr ile yaklaşık eşleştirme nasıl kullanılır?
gibi kısa dizeler için yeterince iyi olmayan sözcük düzeyleri üzerinde çalışır, n-gramları geçmişte yaklaşık eşleme kullanmıştım ve Lucene (ve Solr) 'un bu kutunun dışında bir şeyi desteklediğini görmekten çok mutluyum. Maalesef, doğru bir şekilde yapılandıramadım.
ben bunun için özel bir alan türünü ihtiyaç olduğu kabul yüzden benim schema.xml için saha tipi aşağıdaki ekledi:<fieldType
name="trigrams"
stored="true"
class="solr.StrField">
<analyzer type="index">
<tokenizer
class="solr.analysis.NGramTokenizerFactory"
minGramSize="3"
maxGramSize="5"
/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
ve şemadaki uygun alanı değişti:
Bununla birlikte, beklediğim gibi çalışmıyordur. Sorgu analizi doğru görünüyor, ancak hiçbir sonuç alamıyorum, bu bana öğesinin bir dizin saatinde gerçekleştiğine inanıyor (yani başlık, trigram alanı yerine varsayılan dize alanı gibi dizinlenmiş).ben çalışıyorum sorgu
title:"guy walks into a psychiatrist office"
(yazım hatası yaparak veya iki)
gibi bir şey olduğunu ve "Guy Ruh hekimi Ofisi içine yürür" aynı olmalıdır.
(sorgu doğruysa gerçekten emin değilim.)
Üstelik ben aslında bir şey daha yapabilmek istiyorum. dizgesini altdizlemek, tüm noktalama işaretlerini ve boşlukları kaldırmak, İngilizce sözcüklerini kaldırmak ve daha sonra dizeyi trigram olarak değiştirmek istiyorum. Ancak, filtreler yalnızca dizgenin belirtilenden sonra uygulandıktan sonra ...
Yanıtlarınız için şimdiden teşekkür ederiz.
kullandığınız sorgu gönderebilir miyim? – olle
Soruyu bir örnek sorgu içerecek şekilde düzenledim. –