Add a Khoros Community source

A Khoros Community source is an interactive community that enables users to share digital customer experiences on the Khoros platform. Members of a Coveo organization with the required privileges can add the source to index the content of their Khoros Community instance.

Source key characteristics

The following table presents the main characteristics of a Khoros Community source.

Features Supported Additional information

Khoros Community version

Latest version

Indexable content

Communities, categories, boards, and discussions (also known as threads and conversations) including topics (texts and products), replies (answers, comments, and reviews), messages (also known as posts), and message attachments.

Content update operations

refresh

check

Takes place every hour by default.

A rescan or rebuild is required to take account of deleted or modified items.

rescan

check

Takes place every day by default.

rebuild

check

Content security options

Same users and groups as in your content system

check

See "Content security" tab.

Specific users and groups

check

Everyone

check

Tip
Leading practice

The number of items that a source processes per hour (crawling speed) depends on various factors, such as network bandwidth and source configuration. See About crawling speed for information on what can impact crawling speed, as well as possible solutions.

Add a Khoros Community source

Tip
Leading practice

It’s best to create or edit your source in your sandbox organization first. Once you’ve confirmed that it indexes the desired content, you can copy your source configuration to your production organization, either with a snapshot or manually.

See About non-production organizations for more information and best practices regarding sandbox organizations.

  1. On the Sources (platform-ca | platform-eu | platform-au) page, click Add source, and then select Khoros Community.

  2. Enter a Name for your source.

    Tip
    Leading practice

    A source name can’t be modified once it’s saved, therefore be sure to use a short and descriptive name, using letters, numbers, hyphens (-), and underscores (_). Avoid spaces and other special characters.

  3. Enter a Khoros Community address. To index an entire community, enter its root URL. To index only a part of a community, you can enter specific object addresses.

  4. Under Authentication, select whether Coveo must log in to access your community. If your community is private, select Khoros Community account and enter the credentials of a crawling account for the source. This account must:

    • Be a native Khoros Community account.

    • Be an administrator account if you plan on replicating your Khoros Community permission system in Coveo-powered search interfaces.

    • Be dedicated to the source.

    • Have access to all the content you want to index.

    • Have permission to make REST API read calls for all boards and categories of your community. When you have administrator rights, this setting is available in your Khoros Community Admin section, under Users tab > Permissions navigation bar section > Defaults tab > Make REST API calls with read access.

  5. Back in the Coveo Administration console, enter the username and password of the source account.

  6. Optionally, under Project, select the project you want to associate your source with.

  7. Click Next.

  8. Select who will be able to access the source items through a Coveo-powered search interface. For details on this parameter, see Content security.

    If you select "Same users and groups as in your content system"

    If you want to replicate your Khoros community’s permission system in your Coveo-powered search interface, enter the username of a newly created Khoros user under Permission account. This account will be used by Coveo to discover your permission system, so it must be dedicated to this purpose. It can’t be the administrator account required to index a private community.

    See Permission indexing limitations for more information.

  9. Click Add source.

  10. Specify your source settings. Refer to the following sections for detailed information on the source settings:

"Configuration" tab

The Configuration tab lets you manage the content to index, authentication methods, and advanced settings of your source. These configuration groups are presented in subtabs.

"Content to index" subtab

The Content to index subtab lets you define the content that you want to make available as search results.

By default, Coveo indexes the community or content it finds at the URL you provided when creating the source.

Additional content

Optionally, select additional content to index: message attachments, user data, and/or message tags.

Important

Indexing attachments, users, and/or message tags, especially with large Khoros communities, can significantly increase the indexing time, as it requires an additional API call to Khoros per message/user.

Notes
  • You can include users only when indexing an entire community. If you only index a community subset such as a category or a board, users aren’t included.

  • The Khoros Community source populates three fields for message item folding: @foldingcollection, @foldingparent, and @foldingchild. Other item types such as attachments don’t have the folding field set and therefore can’t be folded. Instead, these items appear as a single result in the search interface.

"Advanced settings" subtab

The Advanced settings subtab lets you customize the Coveo crawler behavior. All advanced settings have default values that are adequate in most use cases.

Content and images

If you want Coveo to extract text from image files or PDF files containing images, enable the appropriate option.

The extracted text is processed as item data, meaning that it’s fully searchable and will appear in the item Quick view. See Enable optical character recognition for details on this feature.

"Authentication" subtab

The Authentication subtab contains the information Coveo needs to access your Khoros Community content.

Khoros Community address

Enter the address of the content you want to index. You can index an entire Khoros community by entering the root URL of the community. The URL should look as follows: http://community.company.com/.

You can also enter the address of a desired category, board, or thread. The address should be in the following format: http://community.company.com/[...]/<KHOROS-OBJECT-LABEL>/<OBJECT-ID>. Check the table below for the possible values for <KHOROS-OBJECT-LABEL>:

Possible values for a Khoros Community object label
Label Khoros Community object

ct-p

Category

tkbc-p

Knowledge base category

bd-p

Forum

tkb-p

Knowledge base

con-p

Contest

idb-p

Idea board

qa-p

Q&A board

bg-p

Blog

gp-p

Group

m-p

Forum thread

td-p

Forum thread

ta-p

Knowledge base article

cns-p

Contest submission

idi-p

Idea

qaq-p

Q&A Question

ba-p

Blog article

gpm-p

Group article

Notes
Authentication

If your Khoros Community is public, that is, accessible without logging in, select No login.

If your community is private, select Khoros Community account and enter the credentials of a crawling account for the source. This account must:

  • Be a native Khoros Community account.

  • Be an administrator account if you plan on replicating your Khoros Community permission system in Coveo-powered search interfaces.

  • Be dedicated to the source.

  • Have access to all the content you want to index.

  • Have permission to make REST API read calls for all boards and categories of your community. When you have administrator rights, this setting is available in your Khoros Community Admin section, under Users tab > Permissions navigation bar section > Defaults tab > Make REST API calls with read access.

See Source credentials leading practices for more information on crawling accounts.

Notes
  • Some Khoros communities contain public and private items. Private items are only accessible to users allowed to view this content. If you have such a community, you must enter the credentials of an account that is allowed to access all private content. If it isn’t, private items won’t be indexed. See Permission indexing limitations for more information.

  • If the crawling account doesn’t have the permission to make REST API read calls for certain boards and categories, they’re skipped during the indexing process and therefore won’t show up in a Coveo-powered search page. Moreover, if your source Community URL is the address of such a board or category, Coveo returns a KHOROS_COMMUNITY_AUTHORIZATION_ERROR error.

  • When your Khoros Community is secured using a basic authentication, you must provide your basic authentication credentials in the source JSON configuration.

  • SSO credentials aren’t supported. You must use a native Khoros account.

"Identification" subtab

The Identification subtab contains general information about the source.

Use the Project selector to associate your source with one or more Coveo projects.

"Content security" tab

Select who will be able to access the source items through a Coveo-powered search interface. For details on this parameter, see Content security.

If you select "Same users and groups as in your content system"

If you want to replicate your Khoros community’s permission system in your Coveo-powered search interface, enter the username of a newly created Khoros user under Permission account. This account will be used by Coveo to discover your permission system, so it must be dedicated to this purpose. It can’t be the administrator account required to index a private community.

See Permission indexing limitations for more information.

"Access" tab

In the Access tab, specify whether each group (and API key, if applicable) in your Coveo organization can view or edit the current source.

For example, when creating a new source, you could decide that members of Group A can edit its configuration, while Group B can only view it.

For more information, see Custom access level.

Completion

  1. Finish adding or editing your source:

    • When you want to save your source configuration changes without starting a build/rebuild, such as when you know you want to do other changes soon, click Add source/Save.

    • When you’re done editing the source and want to make changes effective, click Add and build source/Save and rebuild source.

      Note

      On the Sources (platform-ca | platform-eu | platform-au) page, you must click Launch build or Start required rebuild in the source Status column to add the source content or to make your changes effective, respectively.

      Back on the Sources (platform-ca | platform-eu | platform-au) page, you can follow the progress of your source addition or modification.

      Once the source is built or rebuilt, you can review its content in the Content Browser.

  2. Once your source is done building or rebuilding, review the metadata Coveo is retrieving from your content.

    1. On the Sources (platform-ca | platform-eu | platform-au) page, click your source, and then click More > View and map metadata in the Action bar.

    2. If you want to use a currently not indexed metadata in a facet or result template, map it to a field.

      1. Click the metadata and then, at the top right, click Add to Index.

      2. In the Apply a mapping on all item types of a source panel, select the field you want to map the metadata to, or add a new field if none of the existing fields are appropriate.

        Notes
        • For details on configuring a new field, see Add or edit a field.

        • For advanced mapping configurations, like applying a mapping to a specific item type, see Manage mappings.

      3. Click Apply mapping.

    3. Depending on the source type you use, you may be able to extract additional metadata from your content. You can then map that metadata to a field, just like you did for the default metadata.

      More on custom metadata extraction and indexing

      Some source types let you define rules to extract metadata beyond the default metadata Coveo discovers during the initial source build.

      For example:

      Source type Custom metadata extraction methods

      Push API

      Define metadata key-value pairs in the addOrUpdate section of the PUT request payload used to upload push operations to an Amazon S3 file container.

      In the JSON configuration (REST API | GraphQL API) of the source, define metadata names (REST API | GraphQL API) and specify where to locate the metadata values in the JSON API response Coveo receives.

      Database

      Add <CustomField> elements in the XML configuration. Each element defines a metadata name and the database field to use to populate the metadata with.

      Web

      Sitemap

      Some source types automatically map metadata to default or user created fields, making the mapping process unnecessary. Some source types automatically create mappings and fields for you when you configure metadata extraction.

      See your source type documentation for more details.

    4. When you’re done reviewing and mapping metadata, return to the Sources (platform-ca | platform-eu | platform-au) page.

    5. To reindex your source with your new mappings, click Launch rebuild in the source Status column.

    6. Once the source is rebuilt, you can review its content in the Content Browser.

Refine the content to index

You may want to avoid indexing certain communities, or to index only a few of them. To do so:

  1. If not already done, create and save your source with a broad community URL.

  2. In your source JSON configuration, enter an address filter to refine the targeted content.

    Important

    Your community URL must match one of your inclusion addressPatterns and not match any of your exclusion addressPatterns.

  3. Build or rebuild your source.

Examples
  • With the following filter, Coveo doesn’t index the board whose ID is PrivateBoard.

    
      "AddressPatterns": [
      {
          "Expression": ".*board:PrivateBoard\/.*",
          "PatternType": "RegEx",
          "Allowed": false
      }
      ],
  • With the following filter, Coveo doesn’t index categories whose ID contains Private, private, Moderator, moderator, Archive, or archive.

    
      "AddressPatterns": [
      {
          "Expression": ".*category:([Pp]rivate|[Mm]oderator|[Aa]rchive).*",
          "PatternType": "RegEx",
          "Allowed": false
      }
      ],

Permission indexing limitations

When you replicate your community’s permission system in your Coveo-powered search interface, the interface end users only see the Khoros content they’re allowed to see in your Khoros community. Their Khoros-related search results vary based on the roles they’ve been assigned in Khoros Community. However, this option has some limitations regarding the following:

User privacy settings

Khoros Community user data includes private information such as user full names and email addresses. Privacy settings (My settings > Preferences > Privacy Settings) lets users choose who can see their private information on their profile. Options are: "All", "Friends only", and "No one", which is the default option. When "No one" is selected, the user’s private information is visible to administrators only.

If you decide to index Khoros Community user data, Coveo will crawl user information, including private data. However, since Coveo doesn’t support user privacy settings, it handles user private information as regular data. As a result, depending on your mapping rules, user private information could be available to anyone who can see your Khoros Community content in their search results.

If you want user private information to appear in your Coveo-powered search interface, create mapping rules for fields containing sensitive information such as email and fullname.

If don’t want user private information to appear in your Coveo-powered search interface, ignore these fields. As a result, Coveo will crawl the private information in the sensitive fields, but won’t index it due to the lack of mapping rule.

Restriction roles on public boards

Public Khoros boards are accessible to all users, including unauthenticated users. Khoros administrators can forbid users that have a certain role to access a certain public board. However, this doesn’t affect unauthenticated users. In other words, a user that has a role preventing them to see a certain public board could log out of Khoros and access this board. Since public boards are ultimately public, Coveo doesn’t replicate this behavior. When a board is public, any Coveo user that can access your search interface can also access the board’s content through it.

User-specific permissions

User-specific permissions (Users > Edit Users > Permissions) aren’t supported.

Khoros recommends setting permissions for roles, and then assigning roles to users, rather than using user permissions on a permanent basis.

Required privileges

You can assign privileges to allow access to specific tools in the Coveo Administration Console. The following table indicates the privileges required to view or edit elements of the Sources (platform-ca | platform-eu | platform-au) page and associated panels. See Manage privileges and Privilege reference for more information.

Note

The Edit all privilege isn’t required to create sources. When granting privileges for the Sources domain, you can grant a group or API key the View all or Custom access level, instead of Edit all, and then select the Can Create checkbox to allow users to create sources. See Can Create ability dependence for more information.

Actions Service Domain Required access level

View sources, view source update schedules, and subscribe to source notifications

Content

Fields

View

Sources

Organization

Organization

Edit sources, edit source update schedules, and edit source mappings

Organization

Organization

View

Content

Fields

Edit

Sources

View and map metadata

Content

Source metadata

View

Fields

Organization

Organization

Content

Sources

Edit

What’s next?