# Patent

## Title
Migration of content when accessed using federated search

## Abstract

Migration of content when accessed using federated search is disclosed. A content item is received as a result of a search of a content source not natively configured to provide content type data for content items. The content item is stored as a part of a repository that is organized by content item type, including by associating with the content item a content type.

## Background
BACKGROUND OF THE INVENTION
Computer system users can access data from many sources including local data repositories, network attached data repositories, legacy data repositories, databases, and other resources (e.g., Internet websites). Some systems, for example content management systems, are able to provide search services for its users; these services enable users to identify documents containing a particular word, a particular phrase, a combination of words, related to particular data associated with content (e.g., metadata). However, this service is typically only available for the content and metadata that is internal to the search capable system (e.g., content that is managed by the content management system). In some cases, search is possible within other data sources, however only locally within systems or applications associated with the other sources. It would be beneficial to be able to take advantage of the search ability of a system for searching content or data that is either internal to the system or also content or data that is not internal to the system.
In some cases, a content item is located using the search ability of a system for searching content that is not internal to the system and is part of a legacy content system. Content in the legacy system may not have been migrated into the content management system in its entirety because it would be excessively time consuming and inefficient from a storage perspective. However, once a content item is located that is useful or interesting to a system user, it would be beneficial to migrate the information so that it becomes internal to the content management system making all functionality and services of the content management system available with regard to the content item. It would be beneficial to migrate the content item not internal to the system to become internal to the system and be able to associate appropriate data with content item (e.g., metadata, such as content type).



BRIEF DESCRIPTION OF THE DRAWINGS
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
FIG. 1 is a block diagram illustrating an embodiment of a system for federated search.
FIG. 2 is a flow diagram illustrating an embodiment of a process for a federated search.
FIG. 3 is a flow diagram illustrating an embodiment of a process for causing results to be retrieved from the internal repository.
FIG. 4 is a flow diagram illustrating a process for causing results to be retrieved from external repository(s) and external resource(s) including the retrieval of metadata regarding the results.
FIG. 5 is a flow diagram illustrating an embodiment of a process for migrating content on demand.



DETAILED DESCRIPTION
The invention can be implemented in numerous ways, including as a process, an apparatus, a system, a composition of matter, a computer readable medium such as a computer readable storage medium or a computer network wherein program instructions are sent over optical or electronic communication links. In this specification, these implementations, or any other form that the invention may take, may be referred to as techniques. A component such as a processor or a memory described as being configured to perform a task includes both a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. The computer readable storage medium includes memory.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details. For the purpose of clarity, technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured.
On demand migration of content items is disclosed. A content item is received as a result of a search of a content source not natively organized by content item type. The content item is stored as a part of a system that is organized by content item type. In some embodiments, the content source is a legacy content management system, and the result of the search returns content items that are desired to be imported into the content management system. In some embodiments, content items found through federated search in a content source not natively organized by content item type can be migrated selectively and on demand to a content type aware repository as a “typed” content item. In some embodiments, the search is a desk top search tool that integrates searching of local sources as well as content management repositories, databases, other resources, etc. In some embodiments, the unified search does not require the requestor to know the repository/storage system's query language (e.g., a search for every document with “foo” for a system without full text search would receive a translated command that might include title contains “foo” or text contains “foo”). In some embodiments, type data is associated with a content source or portion thereof and the type data is associated with a content item associated with (e.g., retrieved from and/or identified in the course of a search of) the content source or portion thereof. In some embodiments, a content item not stored in the internal repository but found in response to query performed via the internal repository and/or an associated content management system can be migrated to the internal repository with an automatic capture of type information during the migration. In some embodiments, authentication is required for a given external repository or resource, and a user is prompted for authentication information (e.g., username and password, security token, etc.) as required when a session is initiated. When the search results are accessed again, the authentication information as well as path or access information is recalled from the prior search so that the results are requested again and/or access is provided without the user having to re-authenticate the session or recall the sequence of the search in order to locate the desired information (e.g., search results often provide a temporary path to requested information and in this case the federated search system provides in a manner transparent to the user the ability to re-access the information without the concern that a temporary path may have expired).
FIG. 1 is a block diagram illustrating an embodiment of a system for federated search. In the example shown, one or more users connect to web-based content management application 102 using a computer system, represented in FIG. 1 by computer 100. In the example shown, web-based content management application 102 is built on a content management system vendor-provided web development kit (WDK) 104. In some embodiments, WDK 104 comprises a set of tools to facilitate development of web-based applications, e.g., by providing reusable components pre-configured to interact with a content server and/or other repository to provide content management services. Web-based content management application 102 in some embodiments provides to users content type aware content management services and/or functions. An example of a content type aware service or function is providing a view (display) based at least in part on content item type, e.g., displaying a “calendar” as a grid and an email message with “to”, “from”, “subject”, and/or other fields in a header display region at the top of the display, attachment names/icons in an attachment display region below the header, and message text in a message body display region at the bottom; enabling a user to search by content type; and displaying query results in a manner determined based at least in part on content type. Web-based content management application 102 also includes search services 106. In some embodiments, a user requests a search to a content management system. The content management service searches both the internal repositories of the content management system and external repositories and other attached resources. The content management system receives the search request and the WDK 104 translates the search request for search services 106. Search services 106 translates the search request for a direct search of internal content management system repository 108 and an indirect search of external repositories/resources via enterprise content integration server 110. In some embodiments, search services 106 are provided by business logic and/or foundation classes that comprise a content management framework on which web-based content management application 102 and WDK 104 are based. Enterprise content integration (ECI) server 110 targets the search request for a search of one or more repositories, represented in FIG. 1 by 114 and 118, and/or other resources, represented in FIG. 1 by 122. In some embodiments, content management system repository 108 is a new content management system repository, and one or more of repositories 114 and 118 are legacy content management system repositories. In various embodiments, external repositories comprise other content management systems, database systems, legacy content management systems not capable of the type of search desired, (e.g., FilenetTM, LexisNexisTM, Lotus NotesTM, etc.). In various embodiments, other resources include information sources or search services—for example, GoogleTM, YahooTM, MSNTM, MySimonTM, PricewatchTM, AskJeevesTM, etc. The targeted search request is translated and adapted using a configuration adapter, represented in FIG. 1 by configuration adapter 112, 116, and 120. The configuration adapter also translates and adapts the responses to the search request and passes the responses to ECI server 110. In some embodiments, the configuration adapter includes associated information in the response to the search request. In some embodiments, the associated information is ultimately used as metadata information that enables the content management system to treat the search results as typed information for the results of the search. In some embodiments, a query broker (not shown) at the content management system is configured to communicate with the ECI server 110 and to use information about the external content sources accessed via ECI server 110 to associate type information with results received from ECI server 110. The results from ECI server 110 in some embodiments indicate the external content source for each responsive content item (or group of items), and the query broker at the content management system associates type information with each content item (or set of content items) based on the source, as identified for example by data associated with a configuration file and/or adapter used to retrieve and/or identify the content from the external source. In some embodiments, more than one configuration adapter is associated with a specific repository or resource—for example, one configuration adapter is configured to facilitate searching for contract information in a specific database and another configuration adapter is configured to facilitate searching for financial information or specification information in the same specific database. In some embodiments, a configuration adapter is easily configured by a user, system administrator, system manager using an application with a graphical user interface (e.g., a WYSIWYG editor) to establish general parsing and syntax rules for communication between the ECI server and the external repository or resource. In various embodiments, the configuration adapter configuration is based on preconfigured templates, has a self learning engine in order to self-configure based at least in part on the external repository type and/or external resource type.
FIG. 2 is a flow diagram illustrating an embodiment of a process for a federated search. In various embodiments, the process of FIG. 2 is executed at least in part in web-based content management application 102, WDK 104, and/or search services 106 of FIG. 1. In the example shown, in 200 a query is received regarding content. In some embodiments, the query requests information regarding the content using type information—for example, a request is made to locate all contracts associated with a company name. In 202, the query is split for the internal repository and for external repository(s) and/or external resource(s). In some embodiments, the query is translated from a user request to a request that can be understood by search services (e.g., WDK 104 translates the query for search services 106—for example, a universal search syntax/language such as DFC). In some embodiments, search services 106 translates the query so that the query is appropriate for the internal repository and the federated search broker, which interacts through configuration adapters, with external repository(s) and external resource(s). In 204, the results are caused to be retrieved from the internal repository. In some embodiments, the translated query for the internal repository (e.g., a proprietary query language for the internal repository or an API call) is caused to execute and the results are received from the internal repository which natively understands typed information. In 206, the results are caused to be retrieved from external repository(s) and other external resource(s), as applicable, including the retrieval of metadata regarding the results. In some embodiments, the translated query for the external repository(s) and/or external resource(s) (e.g., a syntax that conforms to an API or other interface or language associated with enterprise content integration (ECI) server 110) is caused to execute and the results are received from external repository(s) and/or resource(s) which do not natively understand type information. In 208, type information is associated with the results based at least in part on the metadata. In some embodiments, type information is associated with the results based on metadata information received along with results. In some embodiments, a configuration adapter that is configured, on the one hand, to adapt search queries for an external repository or external resource from an ECI server, and, on the other hand, to adapt search query results from an external repository or external resource to an ECI server including adding, querying for, and/or generating appropriate associated metadata for the query results. In some embodiments, the type information does not accompany the search results and instead is learned prior to and/or subsequent to the search being performed and/or results returned. In some embodiments, 206 and 208 are performed by a federated query broker at the content management system, configured to translate queries into a language and/or format understood by the ECI server 110 and to translate results from ECI server 110 into a form and format understood and usable at the content management system. In some embodiments, the functions of the federated query broker as described in the preceding sentence are performed by a broker on ECI server 110 and/or integrated into the functionality of ECI server 110. For example, in some embodiments the ECI server 110 is configured to use information associated with an external content source, e.g., a configuration adapter and/or associated configuration file associated with the external content source, to associate type information with content items responsive to a query, e.g., by injecting content type data (e.g., metadata) as appropriate in a stream of results data sent to the content management system from which a federated query was received. In 201, the results from the internal repository and external repository(s) and external resource(s) are combined and presented as typed information. In some embodiments, transparent to a requesting user, combined search results from the internal repository and external repository(s) and/or external resource(s) are presented to a user in a content type aware manner as a single/integrated set of results. In some embodiments, the results are deduplicated (i.e., results indicating identical content items are reduced to one result) using one or more of the following: a unique identifier or a characteristic attribute such as size, date of creation, type, last modification date, etc. In various embodiments, the search results from the internal repository, the search results from the external repository(s), the results from the external resource(s), or any combination are deduplicated. In some embodiments, content data or result data are translated from a native format associated with the external content source into a common format associated with the content management system (e.g., XML, text, etc.). In some embodiments, content data or result data are not translated from a native format associated with the external content source (e.g., Microsoft WordTM format, Adobe PDFTM format, etc.).
FIG. 3 is a flow diagram illustrating an embodiment of a process for causing results to be retrieved from the internal repository. In some embodiments, the process of FIG. 3 is used to implement 206 of FIG. 2. In the example shown, in 300 the query is caused to be executed. In some embodiments, the search service of a content management system which natively understands typed information is used to perform a search of the internal repository by causing a query to be executed by the repository. In 302, typed results are received. The results from the internal repository can include information regarding content type—for example, information arising from associated metadata information with respect to a specific content item.
FIG. 4 is a flow diagram illustrating a process for causing results to be retrieved from external repository(s) and external resource(s) including the retrieval of metadata regarding the results. In some embodiments, the process of FIG. 4 is used to implement 208 of FIG. 2. In the example shown, in 400 the query is caused to be split for each external repository and/or external resource. In some embodiments, the search is performed only with respect to a subset of external content sources accessible via the ECI server, such as only those external content sources that include content of a content type identified in the query. In some embodiments, the ECI server determines which external sources to search, e.g., based on one or more search terms (e.g., content type). In some embodiments, a broker at the content management system determines which external sources to search and identifies to the ECI server the external content sources to be searched for a particular query. In some embodiments, authentication is required for a given external repository or resource, and a user is prompted for authentication information as required when a session is initiated. When the search results are accessed again, the authentication information as well as path or access information is recalled from the prior search so that the results are presented again or access is provided without the user having to re-authenticate the session or recall the sequence of the search in order to locate the desired information. In 402, for each external repository and/or resource, a translation of the query is caused for the specific external repository or resource. In some embodiments, a configuration adapter is configured to translate the query for a specific repository or resource. In 404, for each split query, the query is caused to be executed. In 406, for each split query, the results are caused to be translated. In 408, all results from each of the split queries are received including metadata. In some embodiments, the metadata is a collection of attribute data from the external repository or resource associated with the search result. In some embodiments, the search result is translated appropriately for the ECI server and the search service.
FIG. 5 is a flow diagram illustrating an embodiment of a process for migrating content on demand. In some embodiments, the process of FIG. 5 follows the process of FIG. 2. Federated search results if not a part of the internal repository can be migrated into the internal repository and stored as typed content with associated metadata. In the example shown, in 500 content is indicated as being not in the internal repository. In some embodiments, the results of the federated search are presented to the search requestor in a manner that indicates that the search result is from an external repository or resource—for example, displayed in a different color (e.g., different from the color used to display a search result from the internal repository), with a different background (e.g., different from the background used to display a search result from the internal repository), with an additional or different icon (e.g., different from the icon used to display a search result from the internal repository), in a separate result window, in a separate list, or by any other appropriate manner of indicating. In 502, an indication is received of the content items that are to be migrated into the internal repository. In various embodiments, the indication comprises a selection of items in a list by highlighting in a list, clicking radio buttons, checking boxes, typing in a text window, or any other appropriate manner of indicating. In various embodiments, the one or more content items are retrieved along with associated metadata in order to be able to load the content item and associated metadata into the internal database so that content is appropriately type or the content items and associated metadata are already loaded in such a manner as to enable loading the content item and associated metadata into the internal database. In 504, object(s) are created in the repository, e.g., one or more persistent objects each configured to represent a corresponding content item in the repository, e.g., by storing metadata about the content item and/or making available one or more methods for accessing and/or managing the content item. In some embodiments, an object is created for each content item to be migrated. In some embodiments, the content items are checked to ensure that there are no duplicates being stored in the repository including checking for duplicates in the new information and/or checking to see if the new information duplicates any previously stored information. In various embodiments, checking for duplicates comprises checking a file size, checking a file creation or modification date, checking a checksum, checking an attribute, or any other appropriate manner of checking to see if a content item is a duplicate. In 506, metadata is loaded (e.g., by populating attributes of the object(s) created at 504) and content is stored in the repository. In some embodiments, the metadata includes content type information derived from metadata associated with the content item, content data comprising the content item, and/or type information associated with and/or received from a configuration adapter and/or file associated with the external content source from which the content item was imported. In some embodiments, metadata and/or a portion thereof is displayed to a user for verification and/or editing prior to saving the object to the repository, e.g., to permit a user to correct an error in mapping content item metadata received from and/or associated with the external source—e.g., content type—to attributes of the object being configured to represent the content item in the local repository. In some embodiments, the search result, session authentication information, temporary path information (e.g., a URL from an external resource search—for example, a GoogleTM search result URL) is stored as metadata associated with a content item.
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.

## Claims

1. A method for managing content, the method comprising:
splitting, by using a computer, received search query for a content management repository natively configured to provide content type data for content items and a content source not natively configured to provide content type data for content items;
searching content items from the repository and the content source based on the step of splitting,
wherein the searching does not receive an indication that a content item is to be migrated into the content management repository that is organized by content item type,
wherein the searching is performed only with respect to a subset of content sources not natively configured to provide content type data for content items that include only content of a particular content type, wherein the searching is not natively configured to provide content type data for content items requires authentication information;
combining search results of the split search query from the repository natively configured to provide content type data for content items and the content source not natively configured to provide content type data for content items, and
wherein if the search results are accessed again, the authentication information is recalled from the prior search so that access is provided without re-authentication;
presenting the search results to a user;
indicating that the content item in the search results is not stored in the content management repository;
checking the content item that has not been previously stored as part of the repository that is organized by content item type,
wherein the checking comprises checking a file size, checking a file creation or modification date, checking a checksum, and checking an attribute; and
storing the content item as a part of the content management repository that is organized by content item type, including by associating with the content item a content type, wherein the storing the content item comprises retrieving entire content item and any related metadata from the content source not natively configured to provide content type data and loading the content item into an internal database of the content management repository that is organized by content item type,
wherein the associating of content type with the content item is determined in part by a configuration adapter configured to search the content source not natively configured to provide content type data for a particular type of information of the content items.

2. The method as in claim 1, further comprising indicating that the content item is associated with the content source not natively organized by content item type.

3. The method as in claim 1, wherein the indication that the content item is not stored in the content management repository comprises at least one of the following: different color display, different color background, different icon, with an additional icon, in a separate window, or in a separate list.

4. The method as in claim 1, wherein authentication for the content source is provided if appropriate.

5. The method as in claim 1, wherein the indication that the content item is to be migrated comprises one of the following: highlighting in a list, clicking a radio button, checking a box, or typing in a text window.

6. The method as in claim 1, further comprising receiving a correction of a mapping of associated information to type or attribute information associated with the content item to be stored.

7. The method as in claim 1, wherein the content type is associated with the content item based at least in part on metadata.

8. The method as in claim 7, wherein the metadata associates the content type with content source.

9. The method as in claim 7, wherein the metadata associates the content type with a portion of content source and the content item is associated with the portion of the content source with which the content type is associated.

10. The method as in claim 1, wherein the content source not natively organized by type comprises one of the following: a database, a content management system, a legacy content management system, an information resource, or a search resource.

11. The method as in claim 1, further comprising checking that the content item has not been previously stored as part of the repository that is organized by content item type.

12. The method as in claim 11, wherein checking comprises one or more of the following: checking a file size, checking a file creation or modification date, checking a checksum, and checking an attribute.

13. The method of claim 1, wherein the content type relates to actual information contained within the content item.

14. The method of claim 13, wherein the content type comprises the type of business information contained in the content item.

15. The method of claim 14, wherein the content type comprises one of the following: contract information or financials.

16. The method of claim 1, wherein the content management repository is part of a content management system that provides content type aware content management services.

17. The method of claim 16, wherein the content type aware service comprises providing a display based at least in part on content item type.

18. The method of claim 17, wherein the associating of content type with the content item is determined in part by a configuration adapter configured to search a content source not natively configured to provide content type data for content items for a particular type of information.

19. The method of claim 16, wherein the content type aware service comprises enabling a user to search by content type.

20. The method of claim 16, wherein the content type aware service comprises displaying query results in a manner determined based at least in part on content type.

21. The method of claim 1, wherein the search of a content source not natively configured to provide content type data for content items requires authentication, and wherein if the search results are accessed again, the authentication information is recalled from a prior search so that access is provided without a user being required to reauthenticate.

22. The method of claim 1, wherein the associating of content type with the content item is based on information associated with the content source not natively configured to provide content type data for content items.

23. The method of claim 1, wherein a search is performed only with respect to a subset of content sources not natively configured to provide content type data for content items that include only content of a particular content type.

24. A computer program product for managing content, the computer program product being embodied in a computer readable storage medium and comprising computer instructions for:
splitting received search query for a content management repository natively configured to provide content type data for content items and a content source not natively configured to provide content type data for content items;
searching content items from the repository and the content source based on the step of splitting,
wherein the searching does not receive an indication that a content item is to be migrated into the content management repository that is organized by content item type,
wherein the searching is performed only with respect to a subset of content sources not natively configured to provide content type data for content items that include only content of a particular content type,
wherein the searching is not natively configured to provide content type data for content items requires authentication information;
combining search results of the split search query from the repository natively configured to provide content type data for content items and the content source not natively configured to provide content type data for content items, and
wherein if the search results are accessed again, the authentication information is recalled from the prior search so that access is provided without re-authentication;
presenting the search results to a user;
indicating that the content item in the search results is not stored in the content management repository;
checking the content item that has not been previously stored as part of the repository that is organized by content item type,
wherein the checking comprises checking a file size, checking a file creation or modification date, checking a checksum, and checking an attribute; and
storing the content item as a part of the content management repository that is organized by content item type, including by associating with the content item a content type, wherein the storing the content item comprises retrieving the content item and any related metadata from the content source not natively configured to provide content type data and loading the content item into an internal database of the content management repository that is organized by content item type,
wherein the associating of content type with the content item is determined in part by a configuration adapter configured to search the content source not natively configured to provide content type data for a particular type of information of the content items.

25. A system for managing content comprising:
a memory;
a processor configured to:
split received search query for a content management repository natively configured to provide content type data for content items and a content source not natively configured to provide content type data for content items;
search content items from the repository and the content source based on the step of splitting,
wherein the searching does not receive an indication that a content item is to be migrated into the content management repository that is organized by content item type,
wherein the searching is performed only with respect to a subset of content sources not natively configured to provide content type data for content items that include only content of a particular content type,
wherein the searching is not natively configured to provide content type data for content items requires authentication information;
combine search results of the split search query from the repository natively configured to provide content type data for content items and the content source not natively configured to provide content type data for content items; and
wherein if the search results are accessed again, the authentication information is recalled from the prior search so that access is provided without re-authentication;
present the search results to a user;
indicate that the content item in the search results is not stored in the content management repository;
check the content item that has not been previously stored as part of the repository that is organized by content item type,
wherein the checking comprises checking a file size, checking a file creation or modification date, checking a checksum, and checking an attribute; and
store the content item as a part of the content management repository that is organized by content item type, including by associating with the content item a content type, wherein storing the content item comprises retrieving entire content item and any related metadata from the content source not natively configured to provide content type data and loading the content item into an internal database of the content management repository that is organized by content item type,
wherein the associating of content type with the content item is determined in part by a configuration adapter configured to search the content source not natively configured to provide content type data for a particular type of information of the content items.

26. The system as in claim 25, wherein the content type is associated with the content item based at least in part on metadata.

27. The system as in claim 26, wherein the metadata associates the content type with the content source.

28. The system as in claim 26, wherein the metadata associates the content type with a portion of the content source and the content item is associated with the portion of the content source with which the content type is associated.

29. The system as in claim 25, wherein the content type relates to actual information contained within the content item.

30. The system as in claim 29 wherein the content type comprises the type of business information contained in the content item.

31. The system as in claim 25, wherein the content management repository is part of a content management system that provides content type aware content management services.

32. The system as in claim 25, wherein the search of a content source not natively configured to provide content type data for content items requires authentication;
and wherein if the search results are access again, the authentication information is recalled from the prior search so that access is provided without re-authentication.

33. The system as in claim 25, wherein the associating of content type with the content item is based on information associated with the content source not natively configured to provide content type data for content items.

34. The system as in claim 25, wherein the associating of content type with the content item is determined in part by a configuration adapter configured to search a content source not natively configured to provide content type data for content items for a particular type of information.

35. The system as in claim 25, wherein the search is performed only with respect to a subset of content sources not natively configured to provide content type data for content items that include only content of a particular content type.