The present invention is related to U.S. Pat. No. 5,831,609 filed Jun. 6, 1995 and U.S. patent application Ser. No. 13/481,743 filed May 25, 2002, the disclosures of which is incorporated herein by reference.
Field of the Invention
The present invention generally relates to remote viewing. More specifically, the present invention relates to aggregated search.
Description of the Related Art
Individuals currently have a variety of options for communicating and carrying out transactions. Such options may include traditional desktop computing devices, as well as various mobile devices (e.g., mobile phones, smartphones, tablets). In fact, many individuals may use multiple computing and mobile devices at home, work, and on the move. For example, an individual may use a desktop computer at work, a laptop computer at home, and one or more mobile devices (e.g., smartphone, tablet) elsewhere. As such, people have come to expect to be able to have access to data and computing resources so to perform most computing tasks anywhere.
One difficulty in meeting such an expectation is that the various computing devices may not all have the same capabilities. For example, such devices may run different operating systems/platforms and applications. Such differences may make it difficult to support the same tasks across such devices. One solution has been to provide remote desktops where a first device runs the applications and a second device receives the visual display that appears on the first device over a communication network (e.g., Internet). Such remote desktops can allow users to access and control resources and data on the first device at a remote location using a second (e.g., portable) device.
One drawback to such an approach arises from the fact that such devices are generally used differently, so applications may be optimized for one type of device, but not another. For example, the different devices may have different sizes and input options (e.g., keyboard, keypad, touchscreen). The display of one device may not be optimized for a second device. For example, if a desktop computer display is shrunk to fit on a smartphone screen, the shrunken size may be difficult for the user to read or discern what is being displayed. Alternatively, if the display is not shrunken, the smartphone may only be able to display a portion of the original display at a time, which also adds to the difficulty in reading and discerning what is being displayed. While some devices allow for manual adjustment of the display by the user, changing displays and images may require the user to continually re-adjust the display, which may be unwieldy and inconvenient. Such is the case in many applications where content only uses a portion of the screen and user interface portions (e.g., toolbars, status bars, scroll bars, rulers).
Likewise, use of each particular device may vary based on its other specifications, including processing ability, memory, availability of applications, etc. For example, a desktop computer allows for multi-tasking involving the concurrent use of multiple applications, multiple documents, etc. The ability to multi-task on a mobile device may be more limited in comparison.
There is a need in the art for improved systems and methods for aggregated search.
Embodiments of the present invention include systems and methods for aggregated search. A user using a client device may provide a search request concerning a file hosted at a remote host. It is determined that the client device has an open session with each of a plurality of remote hosts. Search commands are generated and sent to the remote hosts. Such search commands may be based on an application programming interface specific to the particular remote hosts. Search results may be received from the remotes hosts. The search results may then displayed on the client device in a consolidated list, which may be sorted according to any parameter selected by the user and/or known in the art.
Various embodiments of the present invention include methods for aggregated search. Such methods may include receiving a search request on a client device for a remote file, and executing instructions by a processor to determine that the client device has an open session with each of a plurality of remote hosts and generate a plurality of search commands to the remote hosts. An exemplary search command may be based on an application programming interface specific to one of the remote hosts. Such search commands may be sent to the possible remote hosts, and search results may be received by the client device in return. The client device may generate a display of search results received by the client device from one or more of the remote hosts in response to the search commands.
Embodiments of the present invention may further include systems for aggregated search. Such systems may include one or more host devices and a client device requesting document information from a host device. Each host device may host a plurality of files that are available to the client device via individual sessions. The client device may receive a search request from a user, determine which host devices are currently available via session, generate a search command for each available host device, receive search results in response, and generate a display listing the search results.
Other embodiments of the present invention include non-transitory computer-readable storage media on which is embodied instructions executable to perform a method for aggregated search as previously set forth above.
Systems and methods for aggregated search are provided. A user using a client device may provide a search request concerning a file hosted at a remote host. It is determined that the client device has an open session with each of a plurality of remote hosts. Search commands are generated and sent to the remote hosts. Such search commands may be based on an application programming interface specific to the particular remote hosts. Search results may be received from the remotes hosts. The search results may then displayed on the client device in a consolidated list, which may be sorted according to any parameter selected by the user and/or known in the art.
Communication network 110 may be a local, proprietary network (e.g., an intranet) and/or may be a part of a larger wide-area network (e.g., the cloud). The communications network 110 may be a local area network (LAN), which may be communicatively coupled to a wide area network (WAN) such as the Internet. The Internet is a broad network of interconnected computers and servers allowing for the transmission and exchange of Internet Protocol (IP) data between users connected through a network service provider. Examples of network service providers are the public switched telephone network, a cable service provider, a provider of digital subscriber line (DSL) services, or a satellite service provider. Communications network 110 allows for communication between the various components of network environment 100.
Users may use any number of different electronic computing user devices 120A-D, which may include general purpose computers, mobile phones, smartphones, personal digital assistants (PDAs), portable computing devices (e.g., laptop, netbook, tablets), desktop computing devices, handheld computing device, or any other type of computing device capable of communicating over communication network 110. Such devices 120A-D may also be configured to access data from other storage media, such as memory cards or disk drives as may be appropriate in the case of downloaded services. Such devices 120A-D may include standard hardware computing components such as network and media interfaces, non-transitory computer-readable storage (memory), and processors for executing instructions that may be stored in memory.
User device 120A is illustrated as a mobile phone or smartphone, user device 120B is illustrated as a tablet computing device, user device 120C is illustrated as a desktop computing device, and user device 120D is illustrated as a laptop computing device. As can be seen, each device is sized differently and/or has different input options. Exemplary embodiments of the present invention allow for tasks and applications that are specific to one device (e.g., operating in a Microsoft Windows® environment) to be used and optimized for another user device (e.g., operating in an Apple iOS® environment).
Each user device 120 may act as a host device interacting with another user device 120 that acts as a client; likewise, each user device 120 may act as the client device in communication with another user device 120 acting as a host. A user device 120 may further include a client application, a client 3D library, and a client display driver. Collectively, these elements may enable the user device and the user to consume computer graphics resources or services provided by server 110.
Server 130 may include any type of server or other computing device as is known in the art, including standard hardware computing components such as network and media interfaces, non-transitory computer-readable storage (memory), and processors for executing instructions or accessing information that may be stored in memory. The functionalities of multiple servers may be integrated into a single server. Any of the aforementioned servers (or an integrated server) may take on certain client-side, cache, or proxy server characteristics. These characteristics may depend on the particular network placement of the server or certain configurations of the server.
Server 130 may associated with the same user and located in the same local network as user device 120. Alternatively, server 130 may be located remotely (e.g., in the cloud) and may be associated with a third party that provides services in accordance with embodiments of the present invention. In some instances, the services may be provided via software (e.g., software as a service) downloaded from server 130 to one or more user devices 120. Updated software may similarly be downloaded as the updates become available or as needed. In this regard, host service 140 may be associated with one or more servers that specifically provides hosting services through the cloud.
Server application may represent an application executing (“running”) on server 130. The functionality of server application may be visible to and accessible by client 120 via application publishing over the cloud (e.g., communication network 110), such as that supported by GraphOn GO-Global, Microsoft Remote Desktop Services, and Citrix XenApp. Examples of server application 132 may include a computer-aided design (CAD) application, such as AutoCAD® (by Autodesk, Inc. of San Rafael, Calif.) or Cadence Virtuoso (by Cadence Design Systems of San Jose, Calif.), a medical clinical workflow application such as Symbia.net (by Siemens AG of Munich, Germany), an interactive mapping application such as Google Earth (by Google, Inc of Mountain View, Calif.), or a 3D game.
In method 200 of
In step 210, a search request is received from a client device (e.g., user device 120B). In some embodiments, the indication may be entered by the user onto the client device 120B via touchscreen, which may display one or more options for available hosts, folders, and/or documents. The user may enter or designate any variety of search parameters known in the art for searching files. For example, the user may enter full or partial file names, sizes, content within the file (e.g., full-text search), or any combination of the same. While the term “document” or document-specific terms may be used herein for convenience, the user may specify any kind of text, graphic, spreadsheet, slide, and other file known in the art that is capable of being accessed on a user device 120. Alternatively, the user may have saved a previous search or otherwise allowed for certain default search options.
In step 220, it is determined which host devices are available to the client device via open sessions. In some embodiments, client device 120B may connect to any host device (e.g., user devices 120C-D) that are connected to the communication network 110 and that allow a session to be opened with client device 120B. In some cases, a session may be opened using a software application downloaded to the user devices 120A-D participating in the session. As a result of step 220, it may be determined that client device 120B has two host devices 120C-D, as well as a host service 140, available.
In step 230, a search command is generated for each host device (or service) identified in step 220. In some cases, generating a search command for a particular host device 120C (or host service 140) may involve use of a particular application programming interface (API), wrapper, or other search format known in the art. Referring the foregoing example, client device 120B may generate three search commands, one for host device 120C, one for host device 120D, and one for host service 140.
In step 240, the search commands are sent to the respective host devices, and search results are received in response. As noted above with respect to step 210, the search request may include any combination of search parameters known in the art for finding a file. In that regard, once the search command is received at a host device 120C, the host device 120C may execute the search command to retrieve information regarding files matching the search parameters specified by the search command. No file, one file, or multiple files may be found be meet the search parameters. That information may be sent from host device 120C to client device 120B.
In step 250, a display is generated on client device 120B regarding the collective search results received from the host devices 120C-D and/or host service 140. Referring to
Such access to a file may further include accessing a particular application associated with the same. Being associated with an application means that the document may be accessed, viewed, or the contents otherwise manipulated using the application. The document may be any kind of document known in the art and associated with any application known in the art. User selection of the file is further not necessarily limited by the particular applications that are available on the client device 120B or the particular host device 120C that hosts the file.
Where the session to host device 120C is already open and includes access to other files, selection of the file may involve initiating a new application instance. The client device 120B (or application on client device 120B) may also update the number of instances or number of files from host device 120C are viewed/displayed on client device 120B. In that regard, when the user closes all files from a host device 120B, the remote session with host device 120C may be closed as well.
Moreover, depending on the particular file (e.g., type, size, file extension), the file may be downloaded to client device 120B or viewed remotely on client device 120B. Various algorithms may be used to evaluate each file to determine which may be the fastest way to access the requested file in light of the particular file, application, client device, network connectivity, and other status information known in the art. In addition, user preferences may also be considered in determining whether to download to or enable remote viewing.
There may also be instances where the host device 120C may not host the application associated with the selected file. In that regard, the client device 120B may determine whether it (client device 120B) or another host device 120D may host an application that may be used to open, view, or manipulate the first document. Wherever a file or application is located, the user is provided with the ability to direct and combine such remote resources so as to be able to open, view, and other manipulate the file within the window display of the client device 120B.
In a remote access system, such as client-server computing system 100, the “remoting” software may be installed and executing (i.e., “running”) on a host device (e.g., host device 120C). Such software may allow users to remotely access applications that are installed on host device 120C. By way of example, a set of applications may be installed on host device 120C. Such applications represent any applications, programs, and/or processes executing (i.e., “running”) on host device 120C. The functionality of the applications shall be visible to and accessible by client devices (e.g., client device 120B) via communication network 110 using a process herein known as application publishing, which is currently supported by such products as GraphOn GO-Global, Microsoft Remote Desktop Services, and Citrix XenApp. Such application publishing may be also performed in accordance with teachings of commonly-owned U.S. Pat. No. 5,831,609 filed Jun. 6, 1995 and entitled “Method and system for dynamic translation between different graphical user interface systems” which is incorporated by reference as though fully set forth herein. Such functionalities are also described in further detail in co-pending U.S. patent application Ser. No. 13/481,743, the disclosure of which is incorporated herein by reference. Where there are multiple possible application that can be used to open the first document, the user may designate a preferred application for the document type, or the user may be provided with a menu of the possible applications for selection.
Selection of a file may also initiate a tab display in a window of client device 120B. The client device 120B may generate an image display that corresponds to a tabbed display such as appears in the screenshot of
The user may select another document of interest. The second document may be the same or a different application from that of the first document. In addition, the second document may be hosted by a different remote host. The window display of the client device 120B may include a view of the second requested document, along with one or more other tabs including the tab associated with the first requested document. The user may select any other tab to switch views to a different document (or folder). As illustrated in
Various embodiments of the present invention allow for the method 200 to be performed by an intermediary device (e.g., server 130) which may be associated with the host device or reside elsewhere in the network (e.g., in the cloud). For example, server 130 may receive the request from a requesting client device 120B, forward to a host client devices 120C-D (and/or host service 140), receive responsive data from host client devices 120C-D, use the responsive data to generate the display instructions for client device 120B display, which may then be sent to client device 120B.
Alternatively, the method 200 may be performed by software (e.g., an application) downloaded to a user device 120B. For example, software located at requesting client device 120B may receive the user requests, forward the requests to host devices/services 120C-D/140, receive responsive data responsive to the request as provided by host client device 120C, use the responsive display data to generate the instructions for client device 120B display, which may then be sent or otherwise provided to client device 120B for execution.
The present invention may be implemented in an application that may be operable using a variety of devices. Non-transitory computer-readable storage media refer to any medium or media that participate in providing instructions to a central processing unit (CPU) for execution. Such media can take many forms, including, but not limited to, non-volatile and volatile media such as optical or magnetic disks and dynamic memory, respectively. Common forms of non-transitory computer-readable media include, for example, a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic medium, a CD-ROM disk, digital video disk (DVD), any other optical medium, RAM, PROM, EPROM, a FLASHEPROM, and any other memory chip or cartridge.
Various forms of transmission media may be involved in carrying one or more sequences of one or more instructions to a CPU for execution. A bus carries the data to system RAM, from which a CPU retrieves and executes the instructions. The instructions received by system RAM can optionally be stored on a fixed disk either before or after execution by a CPU. Various forms of storage may likewise be implemented as well as the necessary network interfaces and network topologies to implement the same.
While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. The descriptions are not intended to limit the scope of the invention to the particular forms set forth herein. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments. It should be understood that the above description is illustrative and not restrictive. To the contrary, the present descriptions are intended to cover such alternatives, modifications, and equivalents as may be included within the spirit and scope of the invention as defined by the appended claims and otherwise appreciated by one of ordinary skill in the art. The scope of the invention should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.
Number | Name | Date | Kind |
---|---|---|---|
6763501 | Zhu et al. | Jul 2004 | B1 |
7043534 | Donnelly et al. | May 2006 | B1 |
7062781 | Shambroom | Jun 2006 | B2 |
7359951 | Goel et al. | Apr 2008 | B2 |
7386615 | Surlaker et al. | Jun 2008 | B1 |
7447761 | Ferguson et al. | Nov 2008 | B1 |
7523103 | Goel et al. | Apr 2009 | B2 |
7548979 | Hanners et al. | Jun 2009 | B2 |
7984061 | Goel et al. | Jul 2011 | B1 |
8219720 | Saint-Hilaire et al. | Jul 2012 | B2 |
8280993 | Awadallah et al. | Oct 2012 | B2 |
8438216 | Runcie et al. | May 2013 | B2 |
8489880 | Gagnon et al. | Jul 2013 | B1 |
8555187 | Margolin | Oct 2013 | B2 |
9092525 | Nandakumar et al. | Jul 2015 | B2 |
9286294 | Asmussen et al. | Mar 2016 | B2 |
20010034841 | Shambroom | Oct 2001 | A1 |
20020042923 | Asmussen | Apr 2002 | A1 |
20020103797 | Goel et al. | Aug 2002 | A1 |
20030101294 | Saint-Hilaire et al. | May 2003 | A1 |
20050005015 | Hanners | Jan 2005 | A1 |
20050165742 | Chin | Jul 2005 | A1 |
20060161859 | Holecek et al. | Jul 2006 | A1 |
20060282514 | Saint-Hilaire et al. | Dec 2006 | A1 |
20070156689 | Meek et al. | Jul 2007 | A1 |
20080016255 | Saint-Hilaire et al. | Jan 2008 | A1 |
20090063448 | DePue et al. | Mar 2009 | A1 |
20090177791 | Edelstein | Jul 2009 | A1 |
20090234823 | Wong | Sep 2009 | A1 |
20090254664 | Wada | Oct 2009 | A1 |
20090319695 | Saint-Hilaire et al. | Dec 2009 | A1 |
20100026608 | Adams et al. | Feb 2010 | A1 |
20100082733 | Bernstein et al. | Apr 2010 | A1 |
20100257450 | Go et al. | Oct 2010 | A1 |
20100299187 | Duggal | Nov 2010 | A1 |
20100325245 | Sibillo | Dec 2010 | A1 |
20110131523 | Grant et al. | Jun 2011 | A1 |
20110138295 | Momchilov et al. | Jun 2011 | A1 |
20110150432 | Paul | Jun 2011 | A1 |
20110209064 | Jorgensen et al. | Aug 2011 | A1 |
20110231518 | Srinivasan et al. | Sep 2011 | A1 |
20110276720 | Ickman et al. | Nov 2011 | A1 |
20120084713 | Desai et al. | Apr 2012 | A1 |
20120173612 | Vegesna-Venkata et al. | Jul 2012 | A1 |
20120290567 | Nandakumar et al. | Nov 2012 | A1 |
20120290614 | Nandakumar et al. | Nov 2012 | A1 |
20120304119 | Hoogerwerf et al. | Nov 2012 | A1 |
20130018939 | Chawla et al. | Jan 2013 | A1 |
20130104044 | Gujarathi et al. | Apr 2013 | A1 |
20130111033 | Mao et al. | May 2013 | A1 |
20130117678 | Sun et al. | May 2013 | A1 |
20130138810 | Binyamin et al. | May 2013 | A1 |
20130166629 | Ivashin | Jun 2013 | A1 |
20130167201 | Patel | Jun 2013 | A1 |
20130282752 | Day-Richter et al. | Oct 2013 | A1 |
20130282755 | Procopio et al. | Oct 2013 | A1 |
20140032489 | Hebbar et al. | Jan 2014 | A1 |
20140059158 | Chen et al. | Feb 2014 | A1 |
20140067835 | Harrison et al. | Mar 2014 | A1 |
20140250170 | Duggal | Sep 2014 | A1 |
20150165742 | Reese, Jr. | Jun 2015 | A1 |
20150188990 | Kacmarcik et al. | Jul 2015 | A1 |
20150205447 | Jia | Jul 2015 | A1 |
20150205462 | Jitkoff et al. | Jul 2015 | A1 |
20150215371 | Zamir | Jul 2015 | A1 |
Entry |
---|
U.S. Appl. No. 13/831,789, Christoph Berlin, Aggregated Remote Viewing, filed Mar. 15, 2013. |
U.S. Appl. No. 13/831,793, Christoph Berlin, Aggregated Remote Viewing, filed Mar. 15, 2013. |
U.S. Appl. No. 13/831,795, Christoph Berlin, Cloud-based Aggregated Remote Viewing, filed Mar. 15, 2013. |
U.S. Appl. No. 13/831,798, Christoph Berlin, Remote Viewing Using Multiple Hosts, filed Mar. 15, 2013. |
U.S. Appl. No. 13/831,799, Christoph Berlin, Remote Viewing Using Multiple Hosts, filed Mar. 15, 2013. |
U.S. Appl. No. 13/831,800, Christoph Berlin, Cloud-based Remote Viewing Using Multiple Hosts, filed Mar. 15, 2013. |
U.S. Appl. No. 13/831,802, Christoph Berlin, Aggregated Search, filed Mar. 15, 2013. |
U.S. Appl. No. 13/831,807, Christoph Berlin, Cloud-Based Aggregated Search, filed Mar. 15, 2013. |
U.S. Appl. No. 13/831,789 Office Action mailed Feb. 10, 2015. |
U.S. Appl. No. 13/831,799 Office Action mailed Feb. 27, 2015. |
U.S. Appl. No. 13/831,795 Office Action mailed Dec. 4, 2014. |
U.S. Appl. No. 13/831,800 Office Action mailed Dec. 1, 2014. |
U.S. Appl. No. 13/831,802 Office Action mailed Oct. 23, 2014. |
U.S. Appl. No. 13/831,807 Office Action mailed Oct. 21, 2014. |
U.S. Appl. No. 13/831,789 Final Office Action mailed Jun. 26, 2015. |
U.S. Appl. No. 13/831,795 Final Office Action mailed Jun. 5, 2015. |
U.S. Appl. No. 13/831,800 Final Office Action mailed Jun. 5, 2015. |
U.S. Appl. No. 13/831,793 Office Action mailed Mar. 13, 2015. |
U.S. Appl. No. 13/831,802 Final Office Action mailed Apr. 30, 2015. |
U.S. Appl. No. 13/831,807 Final Office Action mailed Apr. 30, 2015. |
U.S. Appl. No. 13/831,799 Final Office Action mailed Sep. 28, 2015. |
U.S. Appl. No. 13/831,802 Office Action mailed Nov. 24, 2015. |
U.S. Appl. No. 13/831,798 Final Office Action mailed Jan. 25, 2016. |
U.S. Appl. No. 13/831,807 Office Action mailed Jan. 11, 2016. |
U.S. Appl. No. 13/831,807 Final Office Action mailed Jun. 16, 2016. |
Number | Date | Country | |
---|---|---|---|
Parent | 13831802 | Mar 2013 | US |
Child | 13831806 | US |