estoy usando el componente Solr sugerencia con la siguiente configuración:dinámicamente selección de campos para Solr sugerencia (Spellcheck) consulta de múltiples términos
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>
Como se puede ver hay una wich campo spell
estoy usando durante las consultas de sugerencia. Esto funciona muy bien incluso para varias consultas plazo.
Pero lo que necesito es buscar en los campos seleccionados solamente.
Así que, por ejemplo, quiero sugerencias válidas solo para los campos image_memo
y username
El usuario puede agregar y eliminar campos dinámicamente para buscar.
Yo sé que podría hacer algo como esto:
q = (image_memo: * búsqueda * O image_username: * búsqueda *)
pero esto es se está desacelerando dramtically si tiene un montón de campos y una consulta de múltiples términos.
Ejemplo: Búsqueda en campo memo, username, field, field1 and field2
para term, term1 and term2.
((memo: término o nombre de usuario: término o en el campo: término O campo1: término O campo2: término) Y (nota: term1 O nombre de usuario: term1 O campo: term1 O campo1: term1 O campo2: term1) y (memo: término2 O username: término2 o en el campo: término2 O campo1: término2 O campo2: término2))
¿Hay alguna forma de seleccionar dinámicamente los campos spell
? ¿O hay una forma en que puedo buscar campos específicos solo en un campo multivalor
Estoy usando Apach Solr 4 Alpha.
Podría publicar qué solución funcionó para usted, veo que no ha aceptado la respuesta dada. En ese caso, podrías publicar la respuesta. Estoy enfrentando un desafío similar. Gracias – nish