Modern data processing systems, such as general purpose computer systems, allow the users of such systems to create a variety of different types of data files. For example, a typical user of a data processing system may create text files with a word processing program such as Microsoft Word or may create an image file with an image processing program such as Adobe's PhotoShop. Numerous other types of files are capable of being created or modified, edited, and otherwise used by one or more users for a typical data processing system. The large number of the different types of files that can be created or modified can present a challenge to a typical user who is seeking to find a particular file which has been created.
Modern data processing systems often include a file management system which allows a user to place files in various directories or subdirectories (e.g. folders) and allows a user to give the file a name. Further, these file management systems often allow a user to find a file by searching for the file's name, or the date of creation, or the date of modification, or the type of file. An example of such a file management system is the Finder program which operates on Macintosh computers from Apple Inc. of Cupertino, Calif. Another example of a file management system program is the Windows Explorer program which operates on the Windows operating system from Microsoft Corporation of Redmond, Wash. Both the Finder program and the Windows Explorer program include a find command which allows a user to search for files by various criteria including a file name or a date of creation or a date of modification or the type of file. However, this search capability searches through information which is the same for each file, regardless of the type of file. Thus, for example, the searchable data for a Microsoft Word file is the same as the searchable data for an Adobe PhotoShop file, and this data typically includes the file name, the type of file, the date of creation, the date of last modification, the size of the file and certain other parameters which may be maintained for the file by the file management system.
Certain presently existing application programs allow a user to maintain data about a particular file. This data about a particular file may be considered metadata because it is data about other data. This metadata for a particular file may include information about the author of a file, a summary of the document, and various other types of information. A program such as Microsoft Word may automatically create some of this data when a user creates a file and the user may add additional data or edit the data by selecting the “property sheet” from a menu selection in Microsoft Word. The property sheets in Microsoft Word allow a user to create metadata for a particular file or document. However, in existing systems, a user is not able to search for metadata across a variety of different applications using one search request from the user. Furthermore, existing systems can perform one search for data files, but this search does not also include searching through metadata for those files.
Prior existing systems perform indexing of the full content of user files either upon user request or upon a scheduled time.
Methods for managing data in a data processing system and systems for managing data are described herein.
Various methods and systems for creating and updating an index database and/or a metadata database are described. Some of these methods and systems include the use of notifications to cause an index database to be updated, the combining of notifications, the filtering of notifications in cases where a database should not be updated, the use of an order, based on a user's interest in files, when scanning files to determine whether to index the files, and the use of pathnames when determining whether to index files.
According to one aspect of the inventions described herein, a method of managing data in one exemplary embodiment includes combining a set of notifications into a combined notification or a smaller set of notifications for updating a metadata database and/or index database and updating the metadata database and/or the index database after receiving the combined notification. The metadata database may include a first type of information for metadata for a first type of file which differs from a second type of information for metadata for a second type of file because the type of information in metadata for files of the first type differs from the type of information in metadata for files of the second type. In certain exemplary embodiments, the method may also include filtering the notifications before the combining of the notifications; this filtering would normally prevent the updating of a metadata database or an index database for files that should not be in these databases (e.g. temporary files, non-user files, etc.).
According to another aspect of the inventions described herein, a method of managing data in one exemplary embodiment includes determining that a group of related objects has been stored onto a storage medium, and creating in response to the determining, a set of notifications for updating a metadata database and/or index database, and updating the metadata database and/or the index database after receiving the set of notifications. This exemplary embodiment may be used for a package of files which, from a user's perspective, appears as one object in the graphical user interface but to the system appears as a group of related objects.
According to another aspect of the invention described herein, a method of managing data in one exemplary embodiment includes determining an order among logical locations (e.g. directories) on a storage device, wherein the order specifies a sequence for scanning for files to be indexed on the storage device and the sequence is based upon a likelihood of user documents being in the logical locations, and the method also includes scanning through the logical locations to determine whether files need to be indexed. The method further typically includes indexing the full text content of the files in the order which was determined. This order may specify, for example, a sequence which includes a user's home folder and a user's document folder (e.g. outside of the home folder) and then a desktop location and then other folders created by the user, rather than the original system folders or directories present on an original system from a manufacturer. This order may also be based on data indicating a user's interest in files, such as data which recorded which files or directories a user viewed or otherwise accessed, and the order may be based on frequency or recency of the user's access. This order may also specify a sequence for scanning locations to determine whether metadata from files needs to be added into a metadata database.
According to another aspect of the inventions described herein, a method of managing data in one exemplary embodiment includes determining whether to index a file (or to add metadata from a file into a metadata database) based on a file path name of the file and a plurality of predetermined path names. In one implementation, the predetermined path names specify predetermined directories which include temporary directories and operating system directories which should not contain user files that need to be indexed. The method may further include indexing the files in response to determining that a file is to be indexed (and/or adding metadata from a file into a metadata database). This method may be performed automatically by the data processing system such that the user will allow the system to automatically determine what files need to be indexed (and/or what files need to have their metadata added to a metadata database) and what files do not need to be indexed.
Other aspects of the present invention include various data processing systems which perform one or more of the methods described herein and machine readable media which perform one or more of the various methods described herein.
The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like references indicate similar elements.
The subject invention will be described with reference to numerous details set forth below, and the accompanying drawings will illustrate the invention. The following description and drawings are illustrative of the invention and are not to be construed as limiting the invention. Numerous specific details are described to provide a thorough understanding of the present invention. However, in certain instances, well known or conventional details are not described in order to not unnecessarily obscure the present invention in detail.
The present description includes material protected by copyrights, such as illustrations of graphical user interface images. The owners of the copyrights, including the assignee of the present invention, hereby reserve their rights, including copyright, in these materials. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyrights whatsoever. Copyright Apple Computer, Inc. 2004.
As shown in
It will be apparent from this description that aspects of the present invention may be embodied, at least in part, in software. That is, the techniques may be carried out in a computer system or other data processing system in response to its processor, such as a microprocessor, executing sequences of instructions contained in a memory, such as ROM 107, RAM 105, mass storage 106 or a remote storage device. In various embodiments, hardwired circuitry may be used in combination with software instructions to implement the present invention. Thus, the techniques are not limited to any specific combination of hardware circuitry and software nor to any particular source for the instructions executed by the data processing system. In addition, throughout this description, various functions and operations are described as being performed by or caused by software code to simplify description. However, those skilled in the art will recognize what is meant by such expressions is that the functions result from execution of the code by a processor, such as the microprocessor 103.
Capturing and Use of Metadata Across a Variety of Application Programs
The method of
The method of
One particular field which may be useful in the various metadata formats would be a field which includes an identifier of a plug in or other software element which may be used to capture metadata from a data file and/or export metadata back to the creator application.
Various different software architectures may be used to implement the functions and operations described herein. The following discussion provides one example of such an architecture, but it will be understood that alternative architectures may also be employed to achieve the same or similar results. The software architecture shown in
The software architecture 400 also includes a file system directory 417 for the metadata. This file system directory keeps track of the relationship between the data files and their metadata and keeps track of the location of the metadata object (e.g. a metadata file which corresponds to the data file from which it was extracted) created by each importer. In one exemplary embodiment, the metadata database is maintained as a flat file format as described below, and the file system directory 417 maintains this flat file format. One advantage of a flat file format is that the data is laid out on a storage device as a string of data without references between fields from one metadata file (corresponding to a particular data file) to another metadata file (corresponding to another data file). This arrangement of data will often result in faster retrieval of information from the metadata database 415.
The software architecture 400 of
The method of
It will be appreciated that the notification, if done through the OS kernel, is a global, system wide notification process such that changes to any file will cause a notification to be sent to the metadata processing software. It will also be appreciated that in alternative embodiments, each application program may itself generate the necessary metadata and provide the metadata directly to a metadata database without the requirement of a notification from an operating system kernel or from the intervention of importers, such as the importers 413. Alternatively, rather than using OS kernel notifications, an embodiment may use software calls from each application to a metadata processing software which receives these calls and then imports the metadata from each file in response to the call.
As noted above, the metadata database 415 may be stored in a flat file format in order to improve the speed of retrieval of information in most circumstances. The flat file format may be considered to be a non-B tree, non-hash tree format in which data is not attempted to be organized but is rather stored as a stream of data. Each metadata object or metadata file will itself contain fields, such as the fields shown in the examples of
A flexible query language may be used to search the metadata database in the same way that such query languages are used to search other databases. The data within each metadata file may be packed or even compressed if desirable. As noted above, each metadata file, in certain embodiments, will include a persistent identifier which uniquely identifies its corresponding data file. This identifier remains the same even if the name of the file is changed or the file is modified. This allows for the persistent association between the particular data file and its metadata.
User Interface Aspects
Various different examples of user interfaces for inputting search parameters and for displaying search results are provided herein. It will be understood that some features from certain embodiments may be mixed with other embodiments such that hybrid embodiments may result from these combinations. It will be appreciated that certain features may be removed from each of these embodiments and still provide adequate functionality in many instances.
The combination of text entry region 709 and the search parameter menu bar allow a user to specify a search query or search parameters. Each of the configurable pull down menus presents a user with a list of options to select from when the user activates the pull down menu. As shown in
It will also be appreciated that the various options in the pull down menus may depend upon the fields within a particular type of metadata file. For example, the selection of “images” to be searched may cause the various fields present in the metadata for an image type file to appear in one or more pull down menus, allowing the user to search within one or more of those fields for that particular type of file. Other fields which do not apply to “images” types of files may not appear in these menus in order reduce the complexity of the menus and to prevent user confusion.
Another feature of the present invention is shown in
The window 1001 includes an additional feature which may be very useful while analyzing a search result. A user may select individual files from within the display region 1005 and associate them together as one collection. Each file may be individually marked using a specific command (e.g. pressing the right button on a mouse and selecting a command from a menu which appears on the screen, which command may be “add selection to current group”) or similar such commands. By individually selecting such files or by selecting a group of files at once, the user may associate this group of files into a selected group or a “marked” group and this association may be used to perform a common action on all of the files in the group (e.g. print each file or view each file in a viewer window or move each file to a new or existing folder, etc.). A representation of this marked group appears as a folder in the user-configurable portion 1003A. An example of such a folder is the folder 1020 shown in the user-configurable portion 1003A. By selecting this folder (e.g. by positioning a cursor over the folder 1020 and pressing and releasing a mouse button or by pressing another button) the user, as a result of this selection, will cause the display within the display region 1005 of the files which have been grouped together or marked. Alternatively, a separate window may appear showing only the items which have been marked or grouped. This association or grouping may be merely temporary or it may be made permanent by retaining a list of all the files which have been grouped and by keeping a folder 1020 or other representations of the grouping within the user-configurable side bar, such as the side bar 1003A. Certain embodiments may allow multiple, different groupings to exist at the same time, and each of these groupings or associations may be merely temporary (e.g. they exist only while the search results window is displayed), or they may be made permanent by retaining a list of all the files which have been grouped within each separate group. It will be appreciated that the files within each group may have been created from different applications. As noted above, one of the groupings may be selected and then a user may select a command which performs a common action (e.g. print or view or move or delete) on all of the files within the selected group.
The window 1201 shown in
A column 1211 of window 1201 allows a user to select various search parameters by selecting one of the options which in turn causes the display of a submenu that corresponds to the selected option. In the case of
The window 1301 shown in
The search results user interface shown in
It will be appreciated that this method may employ various alternatives. For example, a window may appear after the command option 2232 or 2233 has been selected, and this window asks for a name for the new folder. This window may display a default name (e.g. “new folder”) in case the user does not enter a new name. Alternatively, the system may merely give the new folder or new storage facility a default path name. Also, the system may merely create the new folder and move or copy the items into the new folder without showing the new window as shown in
The indexing of the full text content of user files on a data processing system can be computationally time consuming. For example, the indexing of the full content of user files for the purpose of creating an index database that represents the full content of the files that have been indexed can take considerable computation time as well as considerable storage input/output (I/O) time in reading and writing data to a storage device, such as a hard drive of a data processing system. This may impact a user who is attempting to use the system while the system is automatically indexing user files. Similarly, the importation of metadata from user files into a metadata database can also take considerable computation time and considerable input/output (I/O) time. Some directories and files are uninteresting to users, and thus the indexing or importation of such directories and files can often be avoided. Avoiding the indexing and/or importation of a file or an entire directory of files can potentially save significant processing overhead in a data processing system. Further, some operations which imply a need for an importation or indexing may be redundant, and thus it may be possible to avoid extra work for those operations. The techniques described herein may be used alone or in a combination of the techniques. A combination of two or more techniques described herein, which include filtering, reducing of the number of notifications by a coalescing mechanism and by establishing an order for scanning, which may be referred to as the use of “probe points,” may be used together to reduce the amount of computation time and I/O time required to perform indexing of user files and to add (e.g. import) metadata from user files into a metadata database. These techniques may be particularly useful for removable volumes. A removable volume may be considered to be a storage volume which can be easily electrically coupled to a first data processing system (e.g. to a first computer) and used to read data from the storage volume and/or write data to the storage volume while it is coupled to the first data processing system and then it can be easily electrically uncoupled from the first data processing system and electrically coupled to a second data processing system to also read and write data to the storage volume while it is coupled to the second data processing system. A USB flash drive and a USB, bus powered hard drive are examples of a removable volume. The methods of the inventions can be implemented on both non-removable storage volumes (e.g. those which require opening the case of a computer system to remove the volume) and removable storage volumes.
The combination of techniques which is represented by
The exemplary method of
It will be appreciated that the filtering technique described herein may also be used as a plug in by another program to use.
While filtering provides for a way to reduce the impact of indexing or importation of files into an indexing database or a metadata database respectively, other techniques, such as the coalescing of notifications may also be employed.
A typical notification will include an identification of the file which is the subject of the notification and an identification of the operation on the file and other pertinent data such as, if the operation is a renaming operation, then the file's name before the renaming and the file's name after the renaming or, if the operation is a permissions change, information specifying permissions before and after. The identification of the file may be by a pathname of the file and/or a persistent, unique file identification number or set of characters.
Coalescing of notifications for single files which are not part of packages or a group of related objects may also be performed according to certain embodiments of the invention.
In operation 3001, the first notification that a file “ABC.txt” has been modified is received. This notification is optionally added to a cache of a coalescing unit in operation 3003, and then the notification is added to a “to be imported” queue in operation 3005. A second notification that the file ABC.txt has been modified is received in operation 3007. This notification may be in response to the user selecting a “save” command for the second time in a short period of time. For example, a user may have caused the first notification by saving the file at a first instant of time and then subsequently causing a save command to occur merely three seconds later after the first save command was caused by the user. In response to receiving the second notification, the system determines in operation 3009 whether the first notification for the file ABC.txt has been de-queued and imported. If it has not, then the second notification is dropped, and otherwise processing proceeds to operation 3011. In other words, if the first notification is still queued in the “to be imported” queue, then the second notification is dropped and processing proceeds to operation 3011. If the first notification has been de-queued and imported, then the second notification is saved in the queue and processing proceeds to operation 3011. Operation 3011 attempts to determine when the next notification for the file is likely to be the last one. This may occur when detecting that the program which has created the file is quitting and the save is occurring or by waiting for a period of time. All notifications arriving before that last notification are dropped and the last notification is added to the “to be imported” queue. Then in operation 3013, the last expected notification is de-queued which thereby causes changes in the ABC.txt file to be imported into the metadata database. In an alternative embodiment, data may be retained from at least some (or all) dropped notifications, and this data may be examined to determine whether and when to index the file (or group of files).
In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. It will be evident that various modifications may be made thereto without departing from the broader spirit and scope of the invention as set forth in the following claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.
This application is a divisional of U.S. patent application Ser. No. 11/112,422, filed on Apr. 22, 2005, now U.S. Pat. No. 7,693,856 which is a continuation-in-part of U.S. patent application Ser. No. 10/877,584, filed on Jun. 25, 2004 now U.S. Pat. No. 7,730,012. This application also claims priority to co-pending U.S. Provisional Patent Application No. 60/643,087 filed on Jan. 7, 2005, which provisional application is incorporated herein by reference in its entirety; this application claims the benefit of the provisional's filing date under 35 U.S.C. §119(e). This present application hereby claims the benefit of these earlier filing dates under 35 U.S.C. §120.
Number | Name | Date | Kind |
---|---|---|---|
4270182 | Asija | May 1981 | A |
4704703 | Fenwick | Nov 1987 | A |
4736308 | Heckel | Apr 1988 | A |
4939507 | Beard et al. | Jul 1990 | A |
4985863 | Fujisawa et al. | Jan 1991 | A |
5008853 | Bly et al. | Apr 1991 | A |
5072412 | Henderson, Jr. et al. | Dec 1991 | A |
5228123 | Heckel | Jul 1993 | A |
5241671 | Reed et al. | Aug 1993 | A |
5319745 | Vinsonneau et al. | Jun 1994 | A |
5355497 | Cohen-Levy | Oct 1994 | A |
5388196 | Pajak et al. | Feb 1995 | A |
5392428 | Robins | Feb 1995 | A |
5504852 | Thompson-Rohrlich | Apr 1996 | A |
5544360 | Lewak et al. | Aug 1996 | A |
5557793 | Koerber | Sep 1996 | A |
5592608 | Weber et al. | Jan 1997 | A |
5623681 | Rivette et al. | Apr 1997 | A |
5644657 | Capps et al. | Jul 1997 | A |
5659735 | Parrish et al. | Aug 1997 | A |
5659746 | Bankert et al. | Aug 1997 | A |
5706365 | Rangarajan et al. | Jan 1998 | A |
5706509 | Man-Hak Tso | Jan 1998 | A |
5710844 | Capps et al. | Jan 1998 | A |
5745890 | Burrows | Apr 1998 | A |
5758149 | Bierma et al. | May 1998 | A |
5761678 | Bendert et al. | Jun 1998 | A |
5808224 | Kato | Sep 1998 | A |
5813009 | Johnson et al. | Sep 1998 | A |
5828376 | Solimene et al. | Oct 1998 | A |
5832500 | Burrows | Nov 1998 | A |
5845301 | Rivette et al. | Dec 1998 | A |
5890147 | Peltonen et al. | Mar 1999 | A |
5915251 | Burrows et al. | Jun 1999 | A |
5966710 | Burrows | Oct 1999 | A |
6012053 | Pant et al. | Jan 2000 | A |
6055543 | Christensen et al. | Apr 2000 | A |
6067541 | Raju et al. | May 2000 | A |
6078924 | Ainsbury et al. | Jun 2000 | A |
6115717 | Mehrota et al. | Sep 2000 | A |
6119118 | Kain, III et al. | Sep 2000 | A |
6151602 | Hejlsberg et al. | Nov 2000 | A |
6185574 | Howard et al. | Feb 2001 | B1 |
6199082 | Ferrel et al. | Mar 2001 | B1 |
6236996 | Bapat et al. | May 2001 | B1 |
6237003 | Lewish et al. | May 2001 | B1 |
6278992 | Curtis et al. | Aug 2001 | B1 |
6353820 | Edwards et al. | Mar 2002 | B1 |
6353823 | Kumar | Mar 2002 | B1 |
6363386 | Soderberg et al. | Mar 2002 | B1 |
6370562 | Page et al. | Apr 2002 | B2 |
6374260 | Hoffert et al. | Apr 2002 | B1 |
6389412 | Light | May 2002 | B1 |
6401097 | McCotter et al. | Jun 2002 | B1 |
6408301 | Patton et al. | Jun 2002 | B1 |
6434548 | Emens et al. | Aug 2002 | B1 |
6446062 | Levine et al. | Sep 2002 | B1 |
6466237 | Miyao et al. | Oct 2002 | B1 |
6473794 | Guheen et al. | Oct 2002 | B1 |
6480835 | Light | Nov 2002 | B1 |
6505188 | Ghazal et al. | Jan 2003 | B1 |
6505205 | Kothuri et al. | Jan 2003 | B1 |
6513051 | Bolosky et al. | Jan 2003 | B1 |
6549916 | Sedlar | Apr 2003 | B1 |
6564225 | Brogliatti et al. | May 2003 | B1 |
6567805 | Johnson et al. | May 2003 | B1 |
6591272 | Williams | Jul 2003 | B1 |
6611838 | Ignat et al. | Aug 2003 | B1 |
6613101 | Mander et al. | Sep 2003 | B2 |
6631366 | Nagavamsi et al. | Oct 2003 | B1 |
6643641 | Snyder | Nov 2003 | B1 |
6643661 | Polizzi et al. | Nov 2003 | B2 |
6643706 | Marques et al. | Nov 2003 | B1 |
6665657 | Dibachi | Dec 2003 | B1 |
6697810 | Kumar | Feb 2004 | B2 |
6704739 | Craft et al. | Mar 2004 | B2 |
6714934 | Fordham | Mar 2004 | B1 |
6732111 | Brodersen et al. | May 2004 | B2 |
6745193 | Horvitz et al. | Jun 2004 | B1 |
6766314 | Burnett | Jul 2004 | B2 |
6804680 | Melli | Oct 2004 | B2 |
6820075 | Shanahan et al. | Nov 2004 | B2 |
6820135 | Dingman et al. | Nov 2004 | B1 |
6832263 | Polizzi et al. | Dec 2004 | B2 |
6847959 | Arrouye et al. | Jan 2005 | B1 |
6928433 | Goodman et al. | Aug 2005 | B2 |
7752176 | Kushwah et al. | Jul 2010 | B1 |
20010054042 | Watkins et al. | Dec 2001 | A1 |
20020026631 | Barritz | Feb 2002 | A1 |
20020040442 | Ishidera | Apr 2002 | A1 |
20020042835 | Pepin et al. | Apr 2002 | A1 |
20020049738 | Epstein | Apr 2002 | A1 |
20020169771 | Melmon et al. | Nov 2002 | A1 |
20020184195 | Qian | Dec 2002 | A1 |
20020184196 | Lehmeier et al. | Dec 2002 | A1 |
20030018622 | Chau | Jan 2003 | A1 |
20030084087 | Berry | May 2003 | A1 |
20030088567 | Rosenfelt et al. | May 2003 | A1 |
20030088573 | Stickler | May 2003 | A1 |
20030100999 | Markowitz | May 2003 | A1 |
20030117907 | Kang | Jun 2003 | A1 |
20030122873 | Dieberger et al. | Jul 2003 | A1 |
20030122874 | Dieberger et al. | Jul 2003 | A1 |
20030135828 | Dockter et al. | Jul 2003 | A1 |
20030135840 | Szabo et al. | Jul 2003 | A1 |
20030140035 | Burrows | Jul 2003 | A1 |
20030144990 | Benelisha et al. | Jul 2003 | A1 |
20030158855 | Farnham et al. | Aug 2003 | A1 |
20030196094 | Hillis et al. | Oct 2003 | A1 |
20030200218 | Tijare et al. | Oct 2003 | A1 |
20030200234 | Koppich et al. | Oct 2003 | A1 |
20040039748 | Jordan et al. | Feb 2004 | A1 |
20040096110 | Yogeshwar et al. | May 2004 | A1 |
20040148301 | McKay et al. | Jul 2004 | A1 |
20040220955 | McKee | Nov 2004 | A1 |
20040243612 | Bailey | Dec 2004 | A1 |
20050091287 | Sedlar | Apr 2005 | A1 |
20060031263 | Arrouye et al. | Feb 2006 | A1 |
20060059204 | Borthakur et al. | Mar 2006 | A1 |
20060253544 | Luoma et al. | Nov 2006 | A1 |
20070112809 | Arrouye et al. | May 2007 | A1 |
20070156677 | Szabo | Jul 2007 | A1 |
20080162510 | Baio et al. | Jul 2008 | A1 |
20090088191 | Norton et al. | Apr 2009 | A1 |
Number | Date | Country |
---|---|---|
WO 0146870 | Jun 2001 | WO |
WO 03060774 | Jul 2003 | WO |
WO 03090056 | Oct 2003 | WO |
Number | Date | Country | |
---|---|---|---|
20100257178 A1 | Oct 2010 | US |
Number | Date | Country | |
---|---|---|---|
60643087 | Jan 2005 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 11112422 | Apr 2005 | US |
Child | 12748325 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 10877584 | Jun 2004 | US |
Child | 11112422 | US |