2012-10-11 11 views
16

schema.xml snippet:Solr - zapytania nad wszystkimi polami najlepszych praktyk

<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"/> 

Teraz chcę szukać we wszystkich dziedzinach (z wyjątkiem "id" i "TABLE_TYPE") na przykład "cześć". Jak mogę to zrobić? Czy naprawdę muszę pisać dalej?

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

Słyszałem coś o DisMaxRequestHandler, ale jak mam zapytać z tym handler? Czy muszę zmienić coś w pliku solrconfig.xml?

Odpowiedz

21

Najlepszym rozwiązaniem jest zbudowanie boiska, który zbiera dane z wszystkich dziedzin jak ten

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

Jedyną rzeczą, którą musisz zrobić to teraz, skopiuj zawartość wszystkich pól w tej dziedzinie:

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

należy pamiętać, że blok copyField musi być zdefiniowana PONIŻEJ to:

<fields> 
.... 
</fields> 

Teraz możesz wyszukiwać tylko w polu collector, a znajdziesz dowolny tekst w dowolnym z pól.

+0

Myślę, że już zdefiniowałem pole "kolekcjonera" o nazwie "tekst"? :) Cóż, właśnie skopiowałem go z przykładowego pliku schema.xml. – user1731299

+0

To prawda: "tekst" jest równoważnym polem w projekcie solr example ;-) – heinob

+0

co zrobić, jeśli chcę poprawić ocenę na podstawie pasujących pól? – faridasabry

Powiązane problemy