Sto usando la componente solr suggestione con la seguente configurazione:selezione campo in modo dinamico per Solr Suggerimento (Controllo ortografico) interrogazione multipla termine
schema.xml
<fieldType name="textSpell" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="image_memo" type="text_general"/>
<field name="username" type="text_general"/>
<field name="image_memo" type="text_general"/>
<field name="image_text" type="text_general"/>
<!-- More fields included here -->
<field name="spell" type="textSpell" indexed="true" stored="true" multiValued="true"/>
<copyField source="*" dest="spell"/>
solrconfig.xml
<searchComponent class="solr.SpellCheckComponent" name="suggest">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">spell</str>
<str name="buildOnCommit">true</str>
</lst>
</searchComponent>
<requestHandler class="org.apache.solr.handler.component.SearchHandler"
name="/suggest">
<lst name="defaults">
<str name="spellcheck">true</str>
<str name="spellcheck.dictionary">suggest</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.count">6</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.collateExtendedResults">true</str>
<str name="spellcheck.collate">true</str>
<str name="spellcheck.maxCollations">6</str>
<str name="spellcheck.maxCollationTries">1000</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.collateParam.mm">100%</str>
</lst>
<arr name="components">
<str>suggest</str>
<str>query</str>
</arr>
</requestHandler>
Come potete vedere c'è un campo spell
che sto usando per una richiesta di suggerimenti. Funziona perfettamente anche per query a più termini.
Ma quello di cui ho bisogno è cercare solo nei campi selezionati.
Quindi, ad esempio, desidero suggerimenti validi solo per i campi image_memo
e username
L'utente può aggiungere e rimuovere dinamicamente i campi da cercare.
So che avrei potuto fare qualcosa di simile:
q = (image_memo: * Ricerca * O image_username: * Ricerca *)
Ma questo è sta rallentando dramtically se ha molti campi e una query a più termini.
Esempio: ricerca in campo memo, username, field, field1 and field2
per term, term1 and term2.
((nota: termine o utente: termine OR campo: termine O field1: termine O field2: termine) E (nota: term1 O nome utente: termine1 campo O: term1 OR field1: term1 O field2: term1) AND (nota: termine2 O username: termine2 OR campo: termine2 O field1: termine2 O field2: termine2))
C'è un modo per selezionare dinamicamente i campi spell
. O c'è un modo in cui posso cercare campi specifici solo in un campo multivalore
Sto usando Apach Solr 4 Alpha.
Puoi postare quale soluzione ha funzionato per te, vedo che non hai accettato la risposta data. In tal caso, potresti pubblicare la risposta. Sto affrontando una sfida simile. Grazie – nish