2016-07-22 13 views
2

Ich benutze benutzerdefinierte Analysator zum Erstellen einer Indexdatei mit Lucene 5.4.1 Version, und ich versuche Luke zum Suchen von Daten in der Indexdatei zu verwenden. Ich versuche, meinen benutzerdefinierten Analysator mit Luke hinzuzufügen, aber ich finde das nicht in der Registerkarte Analysatoren.Luke + Lucene 5.4.1

i unten Syntax bin mit meinem Analysator Luke java -cp für das Hinzufügen von "Pivot-luke-mit-deps.jar; CatalogSearchAnalyzer.jar" org.getopt.luke.Luke

mein Analysator Code `

public class CatalogSearchAnalyzer extends Analyzer { 
private Version matchVersion; 
private String termValue; 
private boolean retMultiple; 
public static final String[] STOP_WORDS = { "a", "and", "are", "as", "at", 
     "be", "but", "by", "for", "if", "in", "into", "is", "it", "no", 
     "not", "of", "on", "or", "such", "t", "that", "the", "their", 
     "then", "there", "these", "they", "this", "to", "was", "will", 
     "with" }; 
private CharArraySet stopTable; 
private int maxTokenLength; 

public CatalogSearchAnalyzer(Version matchVersion) { 
    this.stopTable = StopFilter.makeStopSet(STOP_WORDS); 
    this.maxTokenLength = 255; 

    this.matchVersion = matchVersion; 
} 

public CatalogSearchAnalyzer() { 
    this(STOP_WORDS); 
} 

public void setTermValue(String termValue) { 
} 

public void setRetMultiple(boolean retMultiple) { 
} 

public CatalogSearchAnalyzer(String[] stopWords) { 
    this.stopTable = StopFilter.makeStopSet(STOP_WORDS); 
    this.maxTokenLength = 255; 

    StopFilter.makeStopSet(stopWords); 
} 

private TokenStream getStemmingFilter(TokenStream result) { 
    PorterStemFilter temp = new PorterStemFilter(result); 
    temp.setRetMultiple(this.retMultiple); 
    return temp; 
} 

protected Analyzer.TokenStreamComponents createComponents(String fieldName)   { 
    StandardTokenizer st = new StandardTokenizer(); 
    st.setMaxTokenLength(this.maxTokenLength); 
    Tokenizer tk = st; 
    TokenStream ts = new StandardFilter(tk); 
    ts = new LowerCaseFilter(ts); 
    ts = new StopFilter(ts, this.stopTable); 
    ts = getStemmingFilter(ts); 
    return new Analyzer.TokenStreamComponents(tk, ts) { 
     protected void setReader(Reader reader) { 
      int m = CatalogSearchAnalyzer.this.maxTokenLength; 
      if (this.source instanceof CmgtTokenizer) { 
       ((CmgtTokenizer) this.source).setMaxTokenLength(m); 
      } 
      super.setReader(reader); 
     } 
    }; 
} 
} 

` Ich bekomme keine Ausnahme beim Hinzufügen meines Glases zu Luke.

Vielen Dank im Voraus für die Untersuchung.

+0

try Nicht-Pivot-Version von luke https://github.com/DmitryKey/luke/releases/tag/luke-5.5.0 –

+0

^wenn es nicht hilft, fühlen Sie sich frei, ein Problem auf GitHub zu öffnen –

+1

Dank D_K es funktionierte, ich will wissen, Unterschied zwischen Pivot und nicht-Pivot-Version von Luke – raj

Antwort

1

Wie im Abschnitt Kommentare unter der Frage angegeben, besteht die Lösung darin, die originale Version von luke zu verwenden, die auf Dünnschliffen basiert, anstelle von pivotbasiertem Luke. Die Pivot-basierte luke ist unfertige und unterstützt nicht alle Funktionen noch

Thinlet luke auf Master (derzeit) (obwohl mehr Tests gefördert wird!): https://github.com/DmitryKey/luke

Pivot luke auf Zweig: https://github.com/DmitryKey/luke/tree/pivot-luke