2011-11-26 10 views
6

Ho un problema durante la ricerca con Solr una frase che ha stopwords. Solr invia il risultato con stopword e questo non è il mio output previsto.Come fermare il risultato in solr, quando la frase che contiene una parola chiave?

Ho aggiunto una parola "test" nel file stopwords.txt. In schema.xml di file, ho il campo, come

<field name="searchword" type="text" indexed="true" stored="true" /> 

ho indicizzati alcuni dati, poi provato a cercare nella finestra del browser solr come segue: Searchword: "test" e non ho avuto risultato. Poi di nuovo ho dato una frase come searchword: "test data" e ho ottenuto il risultato. Come evitare questo scenario? Se contiene una parola di arresto, Solr non dovrebbe dare alcun risultato. Come fermare il risultato in SOLR, quando frase contenente una parola chiave?

che segue è la fieldType sto usando:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    </analyzer> 
    <analyzer type="query">   
     <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" type="phrase"/> 
    </analyzer> 
</fieldType> 

Ho bisogno soluzione per Solr non fornito alcun risultato, mentre io do frase che contiene lo stopword (test)

+1

Potresti pubblicare lo schema.xml? – javanna

risposta

1

A "fermata "la parola è una parola che non viene presa in considerazione in una ricerca; non è una parola che "ferma" o invalida i risultati. Quindi il comportamento che spieghi è corretto: questo è ciò che le parole di arresto dovrebbero fare.

Non c'è modo che io sappia in SOLR di "fermare" il modulo dei risultati che ritorna ogni volta che usi una parola particolare (forse qualcuno ha un'idea?).

L'unica cosa che mi viene in mente è: - Non inviare la query per SOLR quando si osservano questi termini nella query :) - Rimuovere i termini dai documenti prima di indicizzarli (ad esempio utilizzando un UpdateRequestProcessor) e utilizzare le query AND, in questo modo ogni volta che un termine non indicizzato appare nella query otterrete zero risultati

Problemi correlati