Class KNearestNeighborDocumentClassifier

    • Field Detail

      • field2analyzer

        protected final java.util.Map<java.lang.String,​Analyzer> field2analyzer
        map of per field analyzers
    • Constructor Detail

      • KNearestNeighborDocumentClassifier

        public KNearestNeighborDocumentClassifier​(IndexReader indexReader,
                                                  Similarity similarity,
                                                  Query query,
                                                  int k,
                                                  int minDocsFreq,
                                                  int minTermFreq,
                                                  java.lang.String classFieldName,
                                                  java.util.Map<java.lang.String,​Analyzer> field2analyzer,
                                                  java.lang.String... textFieldNames)
                                           throws java.io.IOException
        Parameters:
        indexReader - the reader on the index to be used for classification
        similarity - the Similarity to be used by the underlying IndexSearcher or null (defaults to BM25Similarity)
        query - a Query to eventually filter the docs used for training the classifier, or null if all the indexed docs should be used
        k - the no. of docs to select in the MLT results to find the nearest neighbor
        minDocsFreq - MoreLikeThis.minDocFreq parameter
        minTermFreq - MoreLikeThis.minTermFreq parameter
        classFieldName - the name of the field used as the output for the classifier
        field2analyzer - map with key a field name and the related {org.apache.lucene.analysis.Analyzer}
        textFieldNames - the name of the fields used as the inputs for the classifier, they can contain boosting indication e.g. title^10
        Throws:
        java.io.IOException
    • Method Detail

      • getClasses

        public java.util.List<ClassificationResult<BytesRef>> getClasses​(Document document,
                                                                         int max)
                                                                  throws java.io.IOException
        Description copied from interface: DocumentClassifier
        Get the first max classes (sorted by score, descending) assigned to the given text String.
        Specified by:
        getClasses in interface DocumentClassifier<BytesRef>
        Parameters:
        document - a Document to be classified. Fields are considered features for the classification.
        max - the number of return list elements
        Returns:
        the whole list of ClassificationResult, the classes and scores. Cut for "max" number of elements. Returns null if the classifier can't make lists.
        Throws:
        java.io.IOException - If there is a low-level I/O error.
      • knnSearch

        private TopDocs knnSearch​(Document document)
                           throws java.io.IOException
        Returns the top k results from a More Like This query based on the input document
        Parameters:
        document - the document to use for More Like This search
        Returns:
        the top results for the MLT query
        Throws:
        java.io.IOException - If there is a low-level I/O error