2012-10-11 17 views
16

schema.xml pasajı:solr - tüm alanların üzerine Sorgu en iyi uygulama

<field name="id" type="string" indexed="true" stored="true" required="true" /> 
    <field name="notes" type="text_general" indexed="true" stored="true"/> 
    <field name="missionFocus" type="text_general" indexed="true" stored="true"/> 
    <field name="name" type="text_general" indexed="true" stored="true"/> 
    <field name="first_name" type="text_general" indexed="true" stored="true"/> 
    <field name="last_name" type="text_general" indexed="true" stored="true"/> 
    <field name="about_me" type="text_general" indexed="true" stored="true"/> 
    <field name="message" type="text_general" indexed="true" stored="true"/> 
    <field name="title" type="text_general" indexed="true" stored="true"/> 
    <field name="table_type" type="string" indexed="true" stored="true"/> 

    <field name="text" type="text_general" indexed="true" stored="false" 
      multiValued="true"/> 

Şimdi tüm alanlarda arama yapmak istediğiniz örn için ("id" ve "table_type" hariç) "Merhaba". Bunu nasıl yapabilirim? Aşağıdakileri yazmak zorunda mıyım?

/solr/select/?q=notes:hello missionFocus:hello name:hello first_name:hello .. 

Ben DisMaxRequestHandler hakkında bir şeyler duydum ama nasıl bu işleyicisi ile sorgulamak zorunda? Bunun için solrconfig.xml dosyasındaki bir şeyi değiştirmem gerekiyor mu?

cevap

21

iyi çözüm bu alana tüm alanların içeriğini, bu

<field 
    name="collector" 
    type="text_general" 
    indexed="true" 
    stored="false" 
    multiValued="true" 
/> 

şimdi is yapmak zorunda tek şey gibi tüm alanların veri toplayan bir alan inşa kopyalamaktır:

<fields> 
.... 
</fields> 
01:
<copyField source="notes"  dest="collector"/> 
<copyField source="missionFocus" dest="collector"/> 
<copyField source="name"   dest="collector"/> 
.... 

copyField blok AŞAĞIDA bu tanımlanmış olması gerektiğini unutmayın

Artık sadece collector alanından arama yapabilirsiniz ve alanlarınızdan herhangi birinde herhangi bir metni bulabilirsiniz.

+0

"Metin" adlı bir "koleksiyoncu" alanını zaten tanımladım galiba? :) Eh, sadece schema.xml örneğinden kopyaladım. – user1731299

+0

Doğru: "metin", solr örnek projesindeki eşdeğer alan ;-) – heinob

+0

Hangi alanın eşleştiğine göre skorlamayı değiştirmek istersem ne yapmalıyım? – faridasabry