// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*-

#ifndef __org_apache_lucene_search_similar_MoreLikeThis__
#define __org_apache_lucene_search_similar_MoreLikeThis__

#pragma interface

#include <java/lang/Object.h>
#include <gcj/array.h>

extern "Java"
{
  namespace java
  {
    namespace net
    {
      class URL;
    }
  }
  namespace org
  {
    namespace apache
    {
      namespace lucene
      {
        namespace util
        {
          class PriorityQueue;
        }
        namespace index
        {
          class TermFreqVector;
          class IndexReader;
        }
        namespace search
        {
          namespace similar
          {
            class MoreLikeThis;
          }
          class Query;
          class Similarity;
        }
        namespace analysis
        {
          class Analyzer;
        }
      }
    }
  }
}

class org::apache::lucene::search::similar::MoreLikeThis : public ::java::lang::Object
{
public:
  MoreLikeThis (::org::apache::lucene::index::IndexReader *);
  ::org::apache::lucene::analysis::Analyzer *getAnalyzer () { return analyzer; }
  void setAnalyzer (::org::apache::lucene::analysis::Analyzer *);
  jint getMinTermFreq () { return minTermFreq; }
  void setMinTermFreq (jint);
  jint getMinDocFreq () { return minDocFreq; }
  void setMinDocFreq (jint);
  jboolean isBoost () { return boost; }
  void setBoost (jboolean);
  JArray< ::java::lang::String *> *getFieldNames () { return fieldNames; }
  void setFieldNames (JArray< ::java::lang::String *> *);
  jint getMinWordLen () { return minWordLen; }
  void setMinWordLen (jint);
  jint getMaxWordLen () { return maxWordLen; }
  void setMaxWordLen (jint);
  void setStopWords (::java::util::Set *);
  ::java::util::Set *getStopWords () { return stopWords; }
  jint getMaxQueryTerms () { return maxQueryTerms; }
  void setMaxQueryTerms (jint);
  jint getMaxNumTokensParsed () { return maxNumTokensParsed; }
  void setMaxNumTokensParsed (jint);
  ::org::apache::lucene::search::Query *like (jint);
  ::org::apache::lucene::search::Query *like (::java::io::File *);
  ::org::apache::lucene::search::Query *like (::java::net::URL *);
  ::org::apache::lucene::search::Query *like (::java::io::InputStream *);
  ::org::apache::lucene::search::Query *like (::java::io::Reader *);
private:
  ::org::apache::lucene::search::Query *createQuery (::org::apache::lucene::util::PriorityQueue *);
  ::org::apache::lucene::util::PriorityQueue *createQueue (::java::util::Map *);
public:
  ::java::lang::String *describeParams ();
  static void main (JArray< ::java::lang::String *> *);
private:
  ::org::apache::lucene::util::PriorityQueue *retrieveTerms (jint);
  void addTermFrequencies (::java::util::Map *, ::org::apache::lucene::index::TermFreqVector *);
  void addTermFrequencies (::java::io::Reader *, ::java::util::Map *, ::java::lang::String *);
  jboolean isNoiseWord (::java::lang::String *);
public:
  ::org::apache::lucene::util::PriorityQueue *retrieveTerms (::java::io::Reader *);
  JArray< ::java::lang::String *> *retrieveInterestingTerms (::java::io::Reader *);
  static const jint DEFAULT_MAX_NUM_TOKENS_PARSED = 5000L;
  static ::org::apache::lucene::analysis::Analyzer *DEFAULT_ANALYZER;
  static const jint DEFAULT_MIN_TERM_FREQ = 2L;
  static const jint DEFAULT_MIN_DOC_FREQ = 5L;
  static const jint DEFAULT_BOOST = 0L;
  static JArray< ::java::lang::String *> *DEFAULT_FIELD_NAMES;
  static const jint DEFAULT_MIN_WORD_LENGTH = 0L;
  static const jint DEFAULT_MAX_WORD_LENGTH = 0L;
  static ::java::util::Set *DEFAULT_STOP_WORDS;
private:
  ::java::util::Set * __attribute__((aligned(__alignof__( ::java::lang::Object )))) stopWords;
public:
  static const jint DEFAULT_MAX_QUERY_TERMS = 25L;
private:
  ::org::apache::lucene::analysis::Analyzer *analyzer;
  jint minTermFreq;
  jint minDocFreq;
  jboolean boost;
  JArray< ::java::lang::String *> *fieldNames;
  jint maxNumTokensParsed;
  jint minWordLen;
  jint maxWordLen;
  jint maxQueryTerms;
  ::org::apache::lucene::search::Similarity *similarity;
  ::org::apache::lucene::index::IndexReader *ir;

  friend class org_apache_lucene_search_similar_MoreLikeThis$Int;
  friend class org_apache_lucene_search_similar_MoreLikeThis$FreqQ;
  friend class org_apache_lucene_search_BooleanQuery$TooManyClauses;
  friend class org_apache_lucene_index_IndexReader$FieldOption;
  friend class org_apache_lucene_search_BooleanClause$Occur;
public:

  static ::java::lang::Class class$;
};

#endif /* __org_apache_lucene_search_similar_MoreLikeThis__ */
