2011-11-29 22 views
5

¿Es posible resaltar términos de consulta completos? f.e. cuando pido "Estados Unidos" quiero llegar:Solr: resalte la frase de consulta

<em>United States</em> 

y no:

<em>United</em> <em>States</em> 

He buscado en toda la Internet de una respuesta, utilicé todas las combinaciones de hl. mergeContiguous, hl.usePhrasesHighlighter y hl.highlightMultiTerm parámetros y todavía no puede hacerlo funcionar.

mi consulta es:

http://localhost:8983/solandra/idxPosts.proj350_139/select?q=post_text:"Janusz Palikot"&hl=true&hl.fl=post_text&hl.mergeContiguous=true&hl.usePhrasesHighlighter=true&hl.highlightMultiTerm=true 

la respuesta es:

... 
<arr name="post_text"><str>Tag: <em>janusz</em> <em>palikot</em> - Sowiniec: "Sowiniec"</str></arr> 
... 

mi campo "POST_TEXT" es:

<field name="post_text" type="text" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" required="true" /> 

mi tipo "texto" es:

<fieldType name="text" class="solr.TextField"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory" /> 
     <filter class="solr.TrimFilterFactory" /> 
     <filter class="solr.LowerCaseFilterFactory" /> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_pl.txt" /> 
     <filter class="solr.ReversedWildcardFilterFactory" /> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory" /> 
     <filter class="solr.TrimFilterFactory" /> 
     <filter class="solr.LowerCaseFilterFactory" /> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_pl.txt" /> 
    </analyzer> 
</fieldType> 

También probé a usar FastVectorHighlighter con hl.useFastVectorHighlighter = true pero encontró un error:

Problem accessing /solandra/idxPosts.proj350_139/select. Reason: 

    -6 

java.lang.ArrayIndexOutOfBoundsException: -6 
    at lucandra.TermFreqVector.getOffsets(TermFreqVector.java:224) 
    at org.apache.lucene.search.vectorhighlight.FieldTermStack.<init>(FieldTermStack.java:100) 
    at org.apache.lucene.search.vectorhighlight.FastVectorHighlighter.getFieldFragList(FastVectorHighlighter.java:175) 
    at org.apache.lucene.search.vectorhighlight.FastVectorHighlighter.getBestFragments(FastVectorHighlighter.java:166) 
    at org.apache.solr.highlight.DefaultSolrHighlighter.doHighlightingByFastVectorHighlighter(DefaultSolrHighlighter.java:509) 
    at org.apache.solr.highlight.DefaultSolrHighlighter.doHighlighting(DefaultSolrHighlighter.java:376) 
    at org.apache.solr.handler.component.HighlightComponent.process(HighlightComponent.java:116) 
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:194) 
    ... 

¿Me puede ayudar, por favor?

+0

¿alguna vez encontró una forma de marcar toda la frase (y solo eso) en los resultados de Solr? ... Sé que esto es años después, pero todavía no puedo encontrar una respuesta funcional – mibm

Respuesta

7

Para la frase resaltada, hay un silenciador Jira esperando para llegar al código Solr.

-1

Chech el solr doc para esto, hay el parámetro hl, configure esto verdadero.

Cuestiones relacionadas