2010-07-09 22 views
18

Tüm (veya önekli) alan adları için solr örneğini nasıl sorgularım?Solr: Alan adlarını bir solr dizininden aldınız mı?

Ben

category_0_s 
category_1_s 
... 

gibi dinamik alanlar kullanmak istiyorum ama mevcut olabilir kaç bilmiyorum. Bu yüzden tüm alanları (tercihen "category_" öneki ile) almak istiyorum.

Herhangi bir Fikir? Teşekkür

cevap

20

Kullanım Luke işleyicisi:

http://solr:8983/solr/admin/luke?numTerms=0 

kullanın xpath Aradığınız dinamik alanlar tanımını eşleşen etiketi dynamicBase sahip olduğu tüm alanını alır.

+1

EVET! Bu kadar. Teşekkür ederim. – floplus

+0

@Philippe Kullanılmakta olan tüm dinamik alanların adlarını alamazsınız, bu da orijinal posterin sorduğu şeydir. Soruyu okuyun ve dikkatlice cevaplayın. – GoalBased

+0

@GoalBased Tamam, ama eleştirmek yerine daha iyi bir çözüm verdiyseniz, bu da işe yarayacaktır. Yani "cevabımı" güncelleştirmek için, dinamik alanlar için doğru çağrı http: // host: /solr/collection/schema/dynamicfields. Daha fazla seçenek için bkz. Https://cwiki.apache.org/confluence/display/solr/Schema+API – Philippe

1

Bunu Java uygulamanızdan yapmanız gerekiyorsa, Solrj ve LukeRequestRequestHandler'u kullanabilirsiniz.

Sizin kodunuz böyle görünürdü.

LukeRequest lukeRequest = new LukeRequest(); 
lukeRequest.setNumTerms(0); 

LukeResponse lukeResponse = lukeRequest.process(server); 

Map<String, FieldInfo> fieldInfoMap = lukeResponse.getFieldInfo(); 

for (Entry<String, FieldInfo> entry : fieldInfoMap.entrySet()) { 

    String fieldName = entry.getKey(); 
    FieldInfo fieldInfo = entry.getValue(); 

    // process fieldInfo  
} 
+0

gerektiriyor Nereden geliyor? – tar

+0

Üzgünüm, bir yazım hatası oldu. Kod, hashmap girişlerini verimli bir şekilde yineleyecek şekilde düzeltildi. Bu yardımcı olur umarım. – cjungel

25

Bu sorgu, dinamik olanlar da dahil olmak üzere, kullanımda olan tüm alanların virgülle ayrılmış bir listesini döndürecektir.

select?q=*:*&wt=csv&rows=0&facet 

orijinal soruya cevap vermek için bu facet parametrenin varlığı yeni sürümlerinde bu sorgu çalışması için gerekli olan

select?q=*:*&wt=csv&rows=0&facet&fl=category_* 

category_ ile başlayan tüm alanların bir listesini almak için nasıl Solr. Eski sürümlerde, onsuz çalışacaktır.

Eski sürümlerde, fl parametresindeki joker karakter çalışmayacaktır.

+2

Solr5'te, hem "faset" hem de "facet.field" dahil olmak üzere 400 Hatalı İstek neden olur, ancak yine de alanları içerir. 'Facet.field' bırakarak alanları döndürür ve 200 Başarı – Izkata

+0

@Izkata İyileştirme için teşekkürler! Cevabımı güncelledim. Merakla, 'faset = true' ayarlanması işe yaramıyor, ama 'faset' değeri olmayan çalışır. – GoalBased

+0

Solr 6.3 üzerinde sadece fl = kimlik, kategori ... faset olmadan çalıştı = açık. Ek bilgi göstermek için hala şemaya bir şey eklemem gerekip gerekmediğini merak ediyorum – gadelkareem