Implementing Recommendations

Your application can use the Recommendation Engine to provide recommendations and social-network information to users once the administrator has created the necessary user and document profiles (See Providing Recommendations).

For example, the Recommendation Engine can provide recommendations for documents relevant to a user’s context by analyzing what documents users have accessed or authored, what searches they have issued, which department they belong to, who their colleagues are, what documents the colleagues have accessed, and so on.

The Recommendation Engine currently makes the following features available to users of Recommendation applications.

Adaptive Ranking. When the user executes a search, the Recommendation Engine returns a result set that is ordered based on the document content but also on prior access patterns from the users of the application. Thus, a document that is extremely popular with users who have issued similar queries during a certain period of time moves up in the rankings, but then drops off in the rankings when its popularity subsides.


Your application’s search-result pages could include areas for displaying adaptive ranking of the results, document recommendations, and user community. Figure 4-5 shows a portion of the search results page from a sample Recommendation application. The adaptive ranking is shown in the Rank column beside the document links.

Figure 4-5    Ranking, recommendation, and community

Document Recommendation. When the user views the results of a search, the Recommendation Engine displays a personalized list of documents to the user. The list consists of documents that most closely represent the query plus the user’s profile.


In Figure 4-5, recommended documents are under the Recommendations heading beside the search results.

The recommendations can improve over time, due to context-based personalization. Different people performing the same search may be looking for different things. For example, people from different parts of the world may mean different things by the term “football” (soccer vs. American football). User profiles can be used to tune the results of a given request, and the system can track user interactions and automatically update the profiles.

Community Identification. When the user views the results of a search, the Recommendation Engine can provide a personalized list of other users whose profiles are closest to the current context (user’s profile plus query).


In Figure 4-5, similar users are identified under the My Community heading beside the search results.

Document Similarity. When the user views the content of a document, the Recommendation Engine can provide a personalized list of other similar documents. The list shows the documents (or products, in the case of a catalog application) most relevant to the current context (document plus user’s query).


Your application’s document-display pages could include areas for displaying a list of similar documents and the locations of other interested users (experts). It could also allow for rating of the current document to perform transactional updating of profiles. Figure 4-6 shows a portion of the document-viewing page from a sample Recommendation application. The list of similar documents is shown in the Similar Documents column beside the document content.

Figure 4-6    Document similarity and expert location

Expert Location. When the user views the content of a document, the Recommendation Engine can also provide a list of other people most interested in the subject. The list identifies users whose profiles most closely match the current context (document plus user’s query).


Expert location takes recommendations a logical step beyond adaptive recommendation. As K2 analyzes the patterns of interaction between users and documents, it uncovers implicit relationships between the various users in a system. Based on this analysis, expert location can suggest experts in the enterprise whom the user can consult for a particular context. For example, to a scientist viewing a research report on widgets, it can provide a list of widget experts in the scientist’s domain.

In Figure 4-6, the subject-matter experts are identified under the Interest Group heading beside the document content.

Transactional Updating. One way to use transactions to update profiles is by allowing users to rate documents. When the user views the content of a document, the application can also display a field or control in which the user can score the relevance of the document to the user’s query. The application then uses the Recommendation Engine transaction API to update the document’s profile.


In Figure 4-6, the transactional update is triggered by clicking the rating links (stars) under Rate This Page beside the document content.

Entity Editing. A powerful feature of the Recommendation Engine is that entities can be edited. Users can update their own user profiles directly. Administrators, or other users with special authorization, can update the profiles of other entities, such as categories. Even a query profile can be updated, so that the query becomes relevant to other contexts as well. Usually, the profiles are encrypted within the engine for privacy reasons, but the application can choose to set the profiles to be available in unencrypted form in order to use this editing capability.


Entity Export. It is possible to export a set of entities into an XML file. This allows the entities to be examined, processed further via other scripts and software tools, such as data mining tools, and imported back into the engine or to another instance of the engine running on a different machine or at a different location. The function allows entities to be exported by RI type or specific to a given alias (RI Index).



  Note   Entity export can be accomplished by running the mkre -export command.


Concept-Based Retrieval. One of the limitations of keyword-based retrieval systems is that if a certain keyword is not found in a given document, the system does not retrieve it. A document's representation changes over time based on user interactions, such as queries, even if the document content itself has not changed. This allows domain-specific usage of the information to change document profiles. K2 applications can recommend relevant documents for query terms or concepts that may not exist in the document (or even the entire corpus). This happen automatically over time, without any specific administration/management effort.


Session-Based Profiles. Session-based profiles are temporary and dynamic user profiles that can be used to track relevant searches and purchases so that similar products can also be recommended. Recommendations are geared the user's current context, rather than using historical information. Thus, recommendations made to a user browsing a catalog can be based on earlier transactions within the same session.


Dynamic Taxonomies. The recommendation engine allows extremely simple creation of user-defined categories. These user-defined categories can live in their own namespace, or can be integrated into the organization's taxonomy via the other taxonomy management tools provided with K2.


Your application obtains recommendation information and performs transactional updates by making calls to the VRecommendation Java API and VTransaction API.