> ## Documentation Index
> Fetch the complete documentation index at: https://doc.lucidworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Items-For-User Recommendations

export const LwTemplate = ({title = "Key questions to get you started", icon = "sparkles", cta = "Powered by Agent Studio", linkHref = "https://lucidworks.com/demo/?utm_source=docs&utm_medium=referral&utm_campaign=docs_cta_ai"}) => {
  const [isLoaded, setIsLoaded] = useState(false);
  useEffect(() => {
    const timer = setTimeout(() => {
      setIsLoaded(true);
    }, 500);
    return () => clearTimeout(timer);
  }, []);
  return <div className="lw-template-container">
      <Card title={title} icon={icon}>
        {isLoaded && <span dangerouslySetInnerHTML={{
    __html: `<lw-template id="a029c1a9-28be-427e-b0e1-5d918920246a"></lw-template
            >`
  }} />}
        <Link href={linkHref} className="agent-studio-link text-left text-gray-600 gap-2 dark:text-gray-400 text-sm font-medium flex flex-row items-center hover:text-primary dark:hover:text-primary-light group-hover:text-primary group-hover:dark:text-primary-light">Powered by Lucidworks Agent Studio</Link>
      </Card>
    </div>;
};

[localhost link]: http://localhost:3000/docs/4/fusion-ai/concepts/boosting/items-for-user

[mintlify link]: https://doc.lucidworks.com/docs/4/fusion-ai/concepts/boosting/items-for-user

[old doc.lw link]: https://doc.lucidworks.com/fusion/5.9/477

Items-for-user recommendations use the [Recommend Items for User](/docs/4/fusion-ai/reference/query-pipeline-stages/recommend-items-for-user-query-stage) query stage to present items that are similar to ones in which the user has previously shown interest, based on the user’s search history, browsing history, purchase history, and so on. This is one type of [collaborative recommendation](/docs/4/fusion-ai/concepts/boosting/recommendation-methods#content-based-vs-collaborative-recommendations).

If you have enabled signals and recommendations for a collection, then the default `COLLECTION_NAME_item_recommendations` job is already created and configured to produce items-for-user recommendations (as well as [items-for-item recommendations](/docs/4/fusion-ai/concepts/boosting/items-for-item)):

<img src="https://mintcdn.com/lucidworks/vupE2UCZdg04NdXx/assets/images/4.2/recommendations_job_default.png?fit=max&auto=format&n=vupE2UCZdg04NdXx&q=85&s=c69e5e6a2855522f4110a73090d3f265" alt="Default recommendations job" width="2562" height="1284" data-path="assets/images/4.2/recommendations_job_default.png" />

This is an [ALS Recommender](/docs/4/fusion-ai/reference/jobs/als-recommender) job. See [Items-for-User Recommendations Configuration (ALS)](/docs/4/fusion-ai/reference/boosting/items-for-user-config) for more details.

<LwTemplate />

## Learn more

<Accordion title="Fetch Items-for-User Recommendations (ALS Method)">
  For items-for-user recommendations generated by the ALS recommender job, a `_items_for_user_recommendations` query pipeline is created by default and configured to fetch items-for-user recommendations. It is similar to the default query pipeline that fetches content from your main collection, but it has an additional Recommend Items for User stage.

  This pipeline is a template that you can use two different ways:

  * [Use *only* the Recommend Items for User stage](#fetching-with-the-recommend-items-for-user-stage)\
    This method returns the set of recommended items for the specified user.
  * [Query Solr directly](#querying-solr-directly)\
    This method returns complete documents about the recommended items from the `_items_for_user_recommendations` collection. The fields that are included in these recommender documents are configured in the recommender job’s `itemMetadataJoinField`/**Item Metadata Join Field** and `itemMetadataFields` **Item Metadata Fields** fields; see Item metadata settings above.

  ## Fetching recommendations from App Studio

  App Studio can only access user-created collections; it cannot access system collections such as the default collections that Fusion creates for recommendations. If you are using App Studio to create your front-end search application, you must:

  * Create a new collection for item-for-item recommendations
  * Configure the recommender job to send output to the user-created collection instead of the system collection
  * Direct your queries to the user-created collection

  Once this is done, you can fetch recommendations as usual, using either of the methods explained below.

  ## Fetching with the Recommend Items for User stage

  With this method, we use only one query pipeline stage: the Recommend Items for User query stage.

  This method returns only the document IDs of the recommended items. Your search application must perform additional queries to retrieve the desired fields for those items, such as their names, images, categories, and so on.

  **How to fetch recommendations using the Recommend Items for User stage**

  1. From your  `_items_for_user_recommendations` collection, navigate to **Querying** > **Query Workbench**.

  <Tip>
    If this collection is empty, you must run one of the items-for-user recommender jobs.
  </Tip>

  2. Click **Load...** and open the  `_items_for_user_recommendations` query pipeline, if it is not open already.
  3. Disable all of the pipeline stages *except* Recommend Items for User.
  4. Verify that the following fields are correctly configured in the Recommend Items for User query stage:
     * `numRecommendations`/**Number of Recommendations**\
       This is the number of recommendations to return. It should be less than or equal to the value of the `numSims`/**Number of Item Similarities to Compute** parameter in the model tuning parameters of the `COLLECTION_NAME_item_recommendations` job configuration.
     * `modelID`/**Model ID**\
       This must match the `modelId`/**Recommender Model ID** value in the recommender job’s model settings.
     * `collection`/**Recommendation Collection**\
       This should be the collection specified in the `outputItemSimCollection`/**Item-to-item Similarity Collection** parameter of the recommender job’s input/output settings.
     * `resultsLocation`/**Results Location**\
       Select the **As Response** value for this field.
     * There are several fields that specify the names of fields that should be present in the documents in the `_items_for_user_recommendations` collection. Verify that these values match the field names in that collection.
     * To use live signals in addition to historical signals, enable **Estimate Recent Results**.\
       Be sure to click **Apply** after changing any of the stage configuration parameters.
  5. Click **Save**.

  <Tip>
    Save the modified pipeline as a new pipeline with a different name, to distinguish it from the default pipeline.
  </Tip>

  6. Test the pipeline configuration:
     1. Select a user ID for testing by clicking **show fields** on any result in the `_items_for_user_recommendations` collection and copying the value of its `userId` field.
     2. In the search field, enter the parameter name `userId` and the value that you copied.\
        For example, enter `userId:5049` (substituting the value from your collection) and click the Search button.\
        The number of results should be the same as the `numRecs`/**Number of User Recommendations to Compute** value in the `_item_recommendations` job (the default is 10).
     3. In the lower right, select **View As: JSON**:
          <img src="https://mintcdn.com/lucidworks/1R8QVvJzt46cZDT6/assets/images/4.2/query-workbench-view-as-json.png?fit=max&auto=format&n=1R8QVvJzt46cZDT6&q=85&s=ade6bdc004787e18a8e4d8bdc8225a4f" alt="View as JSON" width="715" height="397" data-path="assets/images/4.2/query-workbench-view-as-json.png" />
     4. Expand the `items` field and any of its `Object` fields:
          <img src="https://mintcdn.com/lucidworks/vupE2UCZdg04NdXx/assets/images/4.2/recommendations-items-for-user-stage-only.png?fit=max&auto=format&n=vupE2UCZdg04NdXx&q=85&s=c47e5cdda68bb6b0104635a455135d98" alt="Recommend Items for User query stage" width="2562" height="1284" data-path="assets/images/4.2/recommendations-items-for-user-stage-only.png" />
        Notice these important fields:
        * `userId` is the user to whom the recommendation pertains.
        * `itemId` is the recommended item.
        * `weight` is the estimated likelihood that the recommended item is of interest to the specified user.
  7. Get the query URI that your search application can use to retrieve recommendations from your modified pipeline:
     1. Click **URI**.\
        The Query Workbench displays a **Working URI** and a **Published URI**.\\
          <img src="https://mintcdn.com/lucidworks/vupE2UCZdg04NdXx/assets/images/4.2/recommendations-items-for-user-uri.png?fit=max&auto=format&n=vupE2UCZdg04NdXx&q=85&s=7306ade5954347e97a8573e2ccf92568" alt="Query URI" width="2562" height="1284" data-path="assets/images/4.2/recommendations-items-for-user-uri.png" />
     2. Click the **Published URI** to copy it to your clipboard.\
        This is the URI and parameters that your search application should use to query for additional recommendations.

  **Tips:**

  * Each time you query for recommendations, replace the `userId` parameter value with the ID of the user for whom you want recommendations.
  * Replace the Fusion hostname as needed, depending on your production environment.
  * As shown above, Fusion returns an array of item IDs and weights. Your search application must then query the main collection to retrieve the details about each of the recommended items.

    That is, for each `itemId` value returned from the recommendations collection, query for the corresponding `id` value in the main collection, and order the set of results according to the `weight` value from the recommendations collection.

  <Tip>
    You can eliminate these additional queries by configuring the join field and item metadata fields in the `_item_recommendations` job’s Item metadata settings. This copies the specified metadata fields from the main collection into the recommendations collection so that they can be retrieved in a single query. For example, if you specify `name`, `url`, `category`, `image`, or similar fields in the job configuration, then those are returned in the recommender results without the need for additional queries.
  </Tip>

  ## Querying Solr directly

  With this method, we use only the Solr Query pipeline stage.

  This method returns only the document IDs of the recommended items. Your search application must perform additional queries to retrieve the desired fields for those items, such as their names, images, categories, and so on.

  **How to fetch recommendations using the Solr Query stage**

  1. From your `_items_for_user_recommendations` collection, navigate to **Querying** > **Query Workbench**.
  2. Click **Load**.
  3. Select the `_items_for_user_recommendations` query pipeline.
  4. Disable all stages in the pipeline *except* the Solr Query stage.
  5. Click **Save**.

  <Tip>
    Save the modified pipeline as a new pipeline with a different name, to distinguish it from the default pipeline.
  </Tip>

  6. Test the pipeline configuration:
     1. Select a user ID for testing by clicking **show fields** on any result in the `_items_for_user_recommendations` collection and copying the value of its `userId` field.
     2. In the search field, enter the parameter name `userId` and the value that you copied.\
        For example, enter `userId:5049` (substituting the value from your collection) and click the Search button.\
        The number of results should be the same as the `numRecs`/**Number of User Recommendations to Compute** value in the `_item_recommendations` job (the default is 10).
     3. In any of the search results, click **show fields**.\
        Notice these important fields:
        * `userId` is the user to whom the recommendation pertains.
        * `itemId` is the recommended item.
        * `weight` is the estimated likelihood that the recommended item is of interest to the specified user.
  7. Get the query URI that your search application can use to retrieve recommendations from your modified pipeline:
     1. Click **URI**.\
        The Query Workbench displays a **Working URI** and a **Published URI**.\\
          <img src="https://mintcdn.com/lucidworks/vupE2UCZdg04NdXx/assets/images/4.2/recommendations-items-for-user-uri-solr.png?fit=max&auto=format&n=vupE2UCZdg04NdXx&q=85&s=949cdda64da89ba3589ddf21b60aa45e" alt="Query URI" width="2562" height="1284" data-path="assets/images/4.2/recommendations-items-for-user-uri-solr.png" />
     2. Click the **Published URI** to copy it to your clipboard.\
        This is the URI and parameters that your search application should use to query for additional recommendations.

  **Tips:**

  * Each time you query for recommendations, replace the `userId` parameter value with the ID of the user for whom you want recommendations.
  * Replace the Fusion hostname as needed, depending on your production environment.
  * As shown above, Fusion returns a set of results that each include an `itemId` and a `weight`. Your search application must then query the main collection to retrieve the details about each of the recommended items.

    That is, for each `itemId` value returned from the recommendations collection, query for the corresponding `id` value in the main collection, and order the set of results according to the `weight` value from the recommendations collection.

  <Tip>
    You can eliminate these additional queries by configuring the join field and item metadata fields in the `_item_recommendations` job’s Item metadata settings. This copies the specified metadata fields from the main collection into the recommendations collection so that they can be retrieved in a single query. For example, if you specify `name`, `url`, `category`, `image`, or similar fields in the job configuration, then those are returned in the recommender results without the need for additional queries.
  </Tip>
</Accordion>
