Package org.apache.lucene.classification
Class KNearestFuzzyClassifier
- java.lang.Object
-
- org.apache.lucene.classification.KNearestFuzzyClassifier
-
- All Implemented Interfaces:
Classifier<BytesRef>
public class KNearestFuzzyClassifier extends java.lang.Object implements Classifier<BytesRef>
A k-Nearest Neighbor classifier based onNearestFuzzyQuery
.
-
-
Field Summary
Fields Modifier and Type Field Description private Analyzer
analyzer
private java.lang.String
classFieldName
the name of the field used as the output textprivate IndexSearcher
indexSearcher
anIndexSearcher
used to perform queriesprivate int
k
the no.private Query
query
aQuery
used to filter the documents that should be used from this classifier's underlyingLeafReader
private java.lang.String[]
textFieldNames
the name of the fields used as the input text
-
Constructor Summary
Constructors Constructor Description KNearestFuzzyClassifier(IndexReader indexReader, Similarity similarity, Analyzer analyzer, Query query, int k, java.lang.String classFieldName, java.lang.String... textFieldNames)
Creates aKNearestFuzzyClassifier
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ClassificationResult<BytesRef>
assignClass(java.lang.String text)
Assign a class (with score) to the given text Stringprivate java.util.List<ClassificationResult<BytesRef>>
buildListFromTopDocs(TopDocs topDocs)
build a list of classification results from search resultsjava.util.List<ClassificationResult<BytesRef>>
getClasses(java.lang.String text)
Get all the classes (sorted by score, descending) assigned to the given text String.java.util.List<ClassificationResult<BytesRef>>
getClasses(java.lang.String text, int max)
Get the firstmax
classes (sorted by score, descending) assigned to the given text String.private TopDocs
knnSearch(java.lang.String text)
java.lang.String
toString()
-
-
-
Field Detail
-
textFieldNames
private final java.lang.String[] textFieldNames
the name of the fields used as the input text
-
classFieldName
private final java.lang.String classFieldName
the name of the field used as the output text
-
indexSearcher
private final IndexSearcher indexSearcher
anIndexSearcher
used to perform queries
-
k
private final int k
the no. of docs to compare in order to find the nearest neighbor to the input text
-
query
private final Query query
aQuery
used to filter the documents that should be used from this classifier's underlyingLeafReader
-
analyzer
private final Analyzer analyzer
-
-
Constructor Detail
-
KNearestFuzzyClassifier
public KNearestFuzzyClassifier(IndexReader indexReader, Similarity similarity, Analyzer analyzer, Query query, int k, java.lang.String classFieldName, java.lang.String... textFieldNames)
Creates aKNearestFuzzyClassifier
.- Parameters:
indexReader
- the reader on the index to be used for classificationanalyzer
- anAnalyzer
used to analyze unseen textsimilarity
- theSimilarity
to be used by the underlyingIndexSearcher
ornull
(defaults toBM25Similarity
)query
- aQuery
to eventually filter the docs used for training the classifier, ornull
if all the indexed docs should be usedk
- the no. of docs to select in the MLT results to find the nearest neighborclassFieldName
- the name of the field used as the output for the classifiertextFieldNames
- the name of the fields used as the inputs for the classifier, they can contain boosting indication e.g. title^10
-
-
Method Detail
-
assignClass
public ClassificationResult<BytesRef> assignClass(java.lang.String text) throws java.io.IOException
Description copied from interface:Classifier
Assign a class (with score) to the given text String- Specified by:
assignClass
in interfaceClassifier<BytesRef>
- Parameters:
text
- a String containing text to be classified- Returns:
- a
ClassificationResult
holding assigned class of typeT
and score - Throws:
java.io.IOException
- If there is a low-level I/O error.
-
getClasses
public java.util.List<ClassificationResult<BytesRef>> getClasses(java.lang.String text) throws java.io.IOException
Description copied from interface:Classifier
Get all the classes (sorted by score, descending) assigned to the given text String.- Specified by:
getClasses
in interfaceClassifier<BytesRef>
- Parameters:
text
- a String containing text to be classified- Returns:
- the whole list of
ClassificationResult
, the classes and scores. Returnsnull
if the classifier can't make lists. - Throws:
java.io.IOException
- If there is a low-level I/O error.
-
getClasses
public java.util.List<ClassificationResult<BytesRef>> getClasses(java.lang.String text, int max) throws java.io.IOException
Description copied from interface:Classifier
Get the firstmax
classes (sorted by score, descending) assigned to the given text String.- Specified by:
getClasses
in interfaceClassifier<BytesRef>
- Parameters:
text
- a String containing text to be classifiedmax
- the number of return list elements- Returns:
- the whole list of
ClassificationResult
, the classes and scores. Cut for "max" number of elements. Returnsnull
if the classifier can't make lists. - Throws:
java.io.IOException
- If there is a low-level I/O error.
-
knnSearch
private TopDocs knnSearch(java.lang.String text) throws java.io.IOException
- Throws:
java.io.IOException
-
buildListFromTopDocs
private java.util.List<ClassificationResult<BytesRef>> buildListFromTopDocs(TopDocs topDocs) throws java.io.IOException
build a list of classification results from search results- Parameters:
topDocs
- the search results as aTopDocs
object- Returns:
- a
List
ofClassificationResult
, one for each existing class - Throws:
java.io.IOException
- if it's not possible to get the stored value of class field
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
-