Automatically classify new documents at index time
Automatically classify new documents at index time
You can predict the categories of new documents at index time by using Classification to analyze previously-classified documents in your index and produce a training model, then referencing the model in Machine learning index stage.Classification job dataflow (documents)

How to configure new document classification
- Sign in to Managed Fusion and click your application.
- Click Collections > Jobs > Add+ > Classification to create a new Classification job.
- In the Model Deployment Name field, enter an ID for the new classification model.
- In the Training Data Path field, enter the collection name or cloud storage path where your main content is stored.
-
In the Training Data Format field, leave the default
solr
value if the Training Data Path is a collection. Otherwise, specify the format of your data in cloud storage. - In the Training collection content field, enter the name of the field that contains the content to analyze. The content field you choose depends on your use case and the typical user query types. For example, you could choose the description field if users tend to make descriptive queries like “4k TV” or “soft waterproof jacket”. But if users are more likely to search for specific brands or products, such as “LG TV” or “North Face jacket”, then the product name field might be more suitable.
-
In the Training collection class field, enter the name of the field that contains the category data.
For additional configuration details, see Best practices below.
- Save the job.
- Specify the model’s name in the Machine learning stage of your index pipeline.
- In the Model input transformation script field, enter the following:
- In the Model output transformation script field, enter the following:
- Click Apply.
- Save the query pipeline.
Custom output transformation script example
Best practices for configuring the Classification job
This job analyzes how your existing documents are categorized and produces a classification model that can be used to predict the categories of new documents at index time.This job takes raw text and an associated single class as input. Although it trains on single classes, there is an option to predict the top several classes with their scores.At a minimum, you must configure these:- An ID for this job
- A Method; Logistic Regression is the default
- A Model Deployment Name
- The Training Collection
- The Training collection content field, the document field containing the raw text
- The Training collection class field containing the classes, labels, or other category data for the text
Automatically classify new queries
Automatically classify new queries
You can predict the categories most likely to satisfy a new query using this workflow:
See the detailed steps below.
- Use the Build Training Data job to join your signals data with your catalog data and produce training data in the form of query/class pairs.
- Use the Classification job to train a classification model using the output collection of the Build Training Data job as the training collection.

To predict the categories of new queries
- Navigate to Collections > Jobs > Add+ > Build Training Data to create a new Build Training Data job.
-
Configure the job as follows:
- In the Catalog Path field, enter the collection name or cloud storage path where your main content is stored.
- In the Catalog Format field, enter
solr
if you are analyzing a Solr collection, or another format if your content is in the cloud. - In the Signals Path field, enter the collection name or cloud storage path where your signals data is stored.
- In the Output Path field, enter the collection name or cloud storage path where you want to store the training data.
- In the Category Field in Catalog field, enter the field name for the category data in your main content.
- In the Item ID Field in Catalog field, enter the field name for the item IDs in your main content.
- Check that the values of Item ID Field in Signals and Count Field in Signals match the field names in your signals data.
- Save the job.
- Click Run > Start to run the job.
- Navigate to Collections > Jobs > Add+ > Classification to create a new Classification job.
-
Configure the job as follows:
- In the Model Deployment Name field, enter an ID for the new classification model.
- In the Training Data Path field, enter the collection name or cloud storage path from the Build Training Data job’s Output Path field.
-
In the Training Data Format field, leave the default
solr
value if the Training Data Path is a collection or if you used the default format in your Build Training Data job configuration. If you configured the Build Training Data job to output a different format, enter it here. -
In the Training collection content field, enter
query_s
, the default content field name in the Build Training Data job’s output. -
In the Training collection class field, enter
category_s
, the default category field name in the Build Training Data job’s output.For additional configuration details, see Best practices below.
- Save the job.
- Verify that the Build Training Data job has finished successfully.
- Click Run > Start to run the job.
- Navigate to Indexing > Query Workbench > Load and select your query pipeline.
-
Configure the query pipeline as follows:
- Add a new Machine Learning stage.
- In the Model ID field, enter the name from the Classification job’s Model Deployment Name field.
- In the Model input transformation script field, enter the following:
- In the Model output transformation script field, enter the following:
- Click Apply.
- Save the query pipeline.
Custom output transformation script examples
Best practices for configuring the Classification job
This job analyzes how your existing documents are categorized and produces a classification model that can be used to predict the categories of new documents at index time.In addition to the information in this topic, see Classify new documents at index time for configuration and examples.This job takes raw text and an associated single class as input. Although it trains on single classes, there is an option to predict the top several classes with their scores.At a minimum, you must configure these:- An ID for this job
- A Method; Logistic Regression is the default
- A Model Deployment Name
- The Training Collection
- The Training collection content field, the document field containing the raw text
- The Training collection class field containing the classes, labels, or other category data for the text
- An ID for this job
- A Method; Logistic Regression is the default
- A Model Deployment Name
- The Training Collection
- The Training collection content field, the document field containing the raw text
- The Training collection class field containing the classes, labels, or other category data for the text
LucidAcademyLucidworks offers free training to help you get started.The Course for Classification focuses on understanding the different classifier models in Fusion:Visit the LucidAcademy to see the full training catalog.
Classification at index time
Used at index time, a classification model can be applied to predict the categories of new, incoming documents. To train a model for this use case, use your main content collection as the training collection. The model requires at least 100 examples in the training data for each category predicted.
Classification job dataflow (documents)
Job flow
The first part of the job is vectorization which is the same for all available classification algorithms. Mainly it supports two types of featurization:- Character-based - for queries or short texts, like document titles, sentences, and so on.
- Word-based - for long texts like paragraphs, documents, and so on.
- Logistic Regression. A classical algorithm with a good trade-off between training speed and results quality. It provides a robust baseline out of the box. Consider using it as a first choice.
- StarSpace. A deep learning algorithm that jointly trains to maximize similarity between text and correct class and minimize similarity between text and incorrect classes. This usually requires more tuning and time for training, but with potentially more accurate results. Consider using it and then tuning it if better results are needed.
Best practices
These tips describe how to tune the options under Vectorization Parameters for best results with different use cases.Query intent / short texts
If you want to train a model to predict query intents or to do short text classification, then enable Use Characters. Another vectorization parameter that can improve model quality is Max Ngram size, with reasonable defaults between 3 and 5. The more character ngrams are used the bigger the vocabulary, so it is worthwhile to tune the Maximum Vocab Size parameter that controls how many unique tokens will be used. Lower values will make training faster and will prevent overfitting but might provide lower quality too. It’s important to find a good balance. Activating the advanced Sublinear TF option usually helps if characters are used.Documents / long texts
If you want to train a model to predict classes for documents or long texts like one or more paragraphs, then uncheck Use Characters. The reasonable values for word-based Max Ngram size are 2-3. Be sure to tune Maximum Vocab Size parameter too. Usually it’s better to leave the advanced Sublinear TF option deactivated.Performance tuning
If the text is very long and Use Characters is checked, the job may take a lot of memory and possibly fail if the amount of memory requested by the job is not available. This may result in pods being evicted or failing with OOM errors. If you see this happening, try the following:- Uncheck Use Characters.
- Reduce the vocabulary size and ngram range of the documents.
- Allocate more memory to the pod.