2013-08-02 1 views
4

Я использую lucene для удаления английских слов Stop, но мое требование - удалить английские слова остановки и пользовательские слова остановки. Ниже мой код, чтобы удалить английские слова остановки, используя lucene.Как добавить пользовательские слова остановки, используя lucene в java

Мой Пример кода:

public class Stopwords_remove { 
    public String removeStopWords(String string) throws IOException 
    { 
     StandardAnalyzer ana = new StandardAnalyzer(Version.LUCENE_30); 
     TokenStream tokenStream = new StandardTokenizer(Version.LUCENE_36,newStringReader(string)); 
     StringBuilder sb = new StringBuilder(); 
     tokenStream = new StopFilter(Version.LUCENE_36, tokenStream, ana.STOP_WORDS_SET); 
     CharTermAttribute token = tokenStream.getAttribute(CharTermAttribute.class); 
     while (tokenStream.incrementToken()) 
     { 
      if (sb.length() > 0) 
      { 
       sb.append(" "); 
      } 
      sb.append(token.toString()); 
     } 
     return sb.toString(); 
    } 

    public static void main(String args[]) throws IOException 
    { 
      String text = "this is a java project written by james."; 
      Stopwords_remove stopwords = new Stopwords_remove(); 
      stopwords.removeStopWords(text); 

    } 
} 

выход: java project written james.

требуемая мощность: java project james.

Как я могу это сделать?

ответ

4

Вы можете добавить свои дополнительные слова остановки в копию стандартного английского слова остановки слова или просто добавить еще один StopFilter. Как:

TokenStream tokenStream = new StandardTokenizer(Version.LUCENE_36, new StringReader(string)); 
CharArraySet stopSet = CharArraySet.copy(Version.LUCENE_36, StandardAnalyzer.STOP_WORD_SET); 
stopSet.add("add"); 
stopSet.add("your"); 
stopSet.add("stop"); 
stopSet.add("words"); 
tokenStream = new StopFilter(Version.LUCENE_36, tokenStream, stopSet); 
//Or, if you just need the added stopwords in a standardanalyzer, you could just pass this stopfilter into the StandardAnalyzer... 
//analyzer = new StandardAnalyzer(Version.LUCENE_36, stopSet); 

или:

TokenStream tokenStream = new StandardTokenizer(Version.LUCENE_36, new StringReader(string)); 
tokenStream = new StopFilter(Version.LUCENE_36, tokenStream, StandardAnalyzer.STOP_WORDS_SET); 
List<String> stopWords = //your list of stop words..... 
tokenStream = new StopFilter(Version.LUCENE_36, tokenStream, StopFilter.makeStopSet(Version.LUCENE_36, stopWords)); 

Если вы пытаетесь создать свой собственный анализатор, вы можете быть лучше обслужены после рисунка больше как пример в Analyzer documentation.

+0

его рабочие благодарности. – user2609542

 Смежные вопросы

  • Нет связанных вопросов^_^