2013-05-20 28 views
5

Yanlış yazılmış kelimeler veya kısaltılmış sözcüklere sahip olabilecek bir veri havuzu üzerinden geçen Solr kullanarak bulanık bir sorgu üzerinde çalışıyorum. Örneğin, depoda "Hlth" ("Sağlık" kelimesinin kısaltılmış şekli ") olan bir ad olabilir.Fuzzy içinde arama Solr

  1. Name:'Health'~0.35 için bulanık arama yaparsam 'Sağlık' sözcüğüyle sonuç alırım ancak 'Hlth' sözcüğünü kullanmıyorum.
  2. Name:'Hlth'~0.35 için bulanık arama yapıyorsam, 'Health' ve 'Hlth' isimleri ile kayıt alıyorum.

İlk sorguyu işe almak istiyorum. Bussiness kullanım durumumda, yanlış yazılan veya kısaltılmış tüm sözcükleri sorgulamak için temiz verileri kullanmalıyım.

Birisi lütfen yardım edin ve # 1 bulanık aramanın neden çalışmadığı konusunda ve eğer bunu başarmanın başka yolları varsa biraz ışık tutabilir.

cevap

4

Bulanık sorgusu yanlış bir şekilde kullanıyorsunuz. Mike McCandless diyerek neyi göre

(http://blog.mikemccandless.com/2011/03/lucenes-fuzzyquery-is-100-times-faster.html):

FuzzyQuery terimleriyle eşleşen "yakın" Belirtilen taban terimine: Eğer tabanından bu düzenleme mesafesinde bir izin verilen maksimum düzenleme mesafe ve herhangi terimleri belirtmek terimi (ve sonra, bu terimleri içeren dokümanlar) eşleştirilir.

QueryParser sözdizimi ~ veya terim, N düzenlemelerin en izin verilen N, terimdir (eski bültenleri N üzerinden eşdeğer maksimum düzenleme mesafe çevirir 0.0 ile 1.0 arasında bir kafa şamandıra oldu zor bir formül).

FuzzyQuery uygun eşleşen adları büyük: mkandless (k ile c değiştirin) ve pek çok diğer ben mcandless ~ 1 arayabilir ve McCandless (insert c) eşleşir, mcandles ( s kaldırın) " kapat "şartlar. Maksimum düzenleme mesafesi 2 ile en fazla 2 ekleme, silme veya yer değiştirme olabilir. Her maçın skoru, o terimin düzenleme mesafesine göre ; böylece tam bir eşleşme en yüksek puanlanır; düzenleme mesafesi 1, daha düşük; vb

Yani bunun gibi sorguları yazmak gerekir - Sağlık ~ 2 Sen yazma

+0

çalışmıyor! Parkway ile Pkwy'yi eşleştirmek ve tersini yapmak istedim. Parkway ~ 2 maç sadece Parkway ve Pkwy ~ 2 sadece maçlar Pkwy –

+0

@Mysterion: FuzzyQuery neden çalışmıyor? denedim = "kim Johnn" ~ 0.2 – iNikkz

2

:

Parkway ve Pkwy 3 bir düzenleme mesafe var "Ben Pkwy ile Parkway eşleştirmek istedik". Bunu, ilk yanıttan "~ 2" için "~ 3" için altından geçirerek başarabilirsiniz, ancak performans nedenleriyle 2'den büyük değerler için Solr bulanık eşleme önerilmez.

Sorununuza yaklaşmanın en iyi yolunun, sözdizimine özgü bir sözlüğünün sözlüğünü oluşturmak ve sorgu süresi genişletmesi yapmak olduğunu düşünüyorum.