This invention relates to file storage, organization, and in general and more particularly to the managing of files on a file server using metadata that is embedded into the files and search engine indexing.
It is now commonplace to retrieve data files from storage locations. In the simplest situation, files are stored on the same system handling the request for the file. Situations arise where it is desired to have several systems access a common set of files. This can be accomplished by setting up a file storage arrangement that is shared across a network. In such file storage arrangements, whether the arrangement serves one system or a plurality of systems, the desired file is retrieved by specifying the name of the file, as well as the full directory path to the file, when required. Thus, files may be moved about over the network arbitrarily.
Such an arrangement has problems when metadata is associated with the various files. Typically, metadata associated with a file is placed in a separate database. Thus, the database must be moved each time a file is moved.
In addition, the storage of files is typically done by placing the file in a folder, somewhere in hierarchical directory structure. Hierarchical storage structures have a limitation in that they require the person filing a document to pick a specific attribute about that file so that a specific folder can be selected to store the file in. However, a file may have several attributes (for example author, subject, language, etc.) that are important to that file. The dilemma faced by the person creating the file structure is how to create a hierarchical structure where some people want to find the files by one attribute, such as author, while other people may want to find the files by another attribute, such as subject, and while still others by language. In order to allow the same document to be found in by searching different attributes, e.g. the author, subject, and language folders, one would need to create three copies of the document, and put one copy in each type folder.
One example of a complex file structure is the audio file structure used in interactive voice response (IVR) systems.
In one embodiment, an audio file could have an attribute such as the language that the file was recoded in, and a second attribute that was the name of the person that recorded the file. These metadata attributes, the language of the recording and the name of the recorder, can be embedded into the file as metadata. The file attributes or file metadata are embedded in the file in such a way that the metadata does not interfere with the normal operation and/or use of the file.
Metadata as described in this patent consists of a list of attributes. Each attribute has a data value that defines the attribute. For example, an attribute of an audio file could be the language that the file was recorded in. The data value would be “English” and the attribute/value pair could be described as “Language=English.” If the person that recorded the file was named John, the attribute value pair would be “Recorded By=John.”
Once each file in a set of files has been modified with embedded metadata, the file set can be placed on a file server or on any type of electronic storage media or system. With file set having embedded metadata, indexing techniques and a search engine can be used to organize indexing structures and find the files without having to define any pre-determined file structure. All of the files can be kept in a single folder, and the search engine can be used to find any file from its attributes. Embodiments of the invention involve putting a file with embedded metadata into the server. When a new file is received by the file server, the metadata embedded in the file is extracted, and indexed. The indexed metadata is stored in one or more metadata index(s) for later use by the search engine. The index(s) includes every attribute type that appears in any of the files that are stored on the file server. The file itself can be placed with all of the other files in a generic folder, as long as the file has a unique name from the other files. The indexing structure will maintain pointers to the actual file location on the server.
When a process or a user needs to retrieve a file(s) from the file server, the metadata attribute(s) of the desire file(s) must be communicated to the file server. The server then invokes the search engine, which pulls the metadata attributes from the request. The search engine looks up the required attributes in the index file, and extracts a list of file names that match the requested attributes. The file server can then return one or more of the files that match the requested attribute list. A specific set of requested attributes can return too many files. In this case, the process or users may want to narrow the search. This can be done by specifying additional attributes.
A specific use of a metadata-enhanced file server is an audio file server (AFS) for use in interactive voice recognition (IVR) systems. When an audio file is placed on an AFS the indexing engine of the AFS is used to extract the metadata and index it. When a set of audio files are loaded onto the audio file server, the server examines each audio file, and extracts the metadata associated with that file. The file server then places each audio file's metadata into the appropriate searchable index for easy discovery when retrieval requests are made. The searchable index kept by the audio file server lists every attribute type that appears in any of the files that are stored on the file server. For example, if an administrator or user wants to find all of the audio files recorded by John on the file server, the index is queried for the “recorded by” attribute set equal to “John” and the index will return pointers to all of the audio files recorded by anyone with “John” in their name. If the administrator wants to narrow the search, additional attributes can be specified, such as requiring that the server find only audio files where John says “Hello World” in English. There still may be more than one audio file that matches this attribute set, as John may have recorded several versions of “Hello World,” with different emotional inflections: stern, happy, sad. Again, the administrator can narrow the search by specifying even more attributes, such as emotional inflection.
When writing an interactive voice script, the developer usually desires only one message to be returned by the audio file server for playback. This can normally be accomplished by simply specifying enough independent attributes to allow the audio file server to resolve the selection down to a single audio file. In situations where the request resolves down to more than one file, the AFS randomly picks one of the selected files to return to the requester. In some situations, the requestor may ask for a list of the selected files to be returned, instead of the actual files.
For a more complete understanding of the present invention, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
In the system of
The file server 101 includes a plurality of files, namely file 1 to file M, a search engine 105, and a plurality of indices, namely index 1 to index N+1. The search engine created the plurality of indices from metadata attributes of the files. The search engine 105 uses the plurality of indices to locate a particular file or files to satisfy a file request by a user or a process.
It is preferred to embed the metadata during file creation, however, existing files without metadata may be modified to include embedded metadata and then restored on the system to index the file at any time, as long as the indexing process is notified to re-index the modified file after the modifications. Metadata may also be embedded into a file before the data is formed dr placed into the file. Furthermore, existing files may be subsequently modified to include new or different attribute(s) and then restored on the system to re-index the file. For example, using the previously defined text file, suppose a user desired to add the attribute that defines the program that is used to write the text file, e.g. program (WORD). The existing metadata would be edited to include the new metadata and then the file is restored on the system.
Advantages may be realized by storing the metadata in the file. One advantage is that by storing the information in the file, it will be readily accessible wherever copies of the file are made available. This information can then be accessed by subsequent automated processes or live users, to perform various tasks with the files. This is opposed to storing the metadata in a database external to the files, so that copies of the database must accompany the files whenever the metadata must be accessed.
Some typical metadata elements that are specific to audio files which may be placed in files, are the name of the person that recorded the file, the language that was used in the recording, the text transcription of what was recorded, the inflection, the recording date, translations of the file into other languages, etc. After the metadata has been placed in the file, subsequent processes or users can examine that data to make decisions about what to do with the audio file.
With embedded attribute metadata, anyone with a copy of the audio file and a proper tool can determine information about the file without having to listen to the file or obtain a copy of a metadata database containing all the file's metadata. Various specialized tools can be used to view the metadata in the file, so either an automated process or a live user can access the attribute metadata.
In
In
The metadata that is stored in the data file and/or used in the file request may be in the form of a key/value pair. For example, using the above-reference text file example, key value pairs may be expressed as file-type=text, color=blue, font=Times New Roman, content=‘hello world’, and language=English. The indices stored in the file server would include the values and a pointer to the associated file. Continuing with the example, one index would be language, with one entry in the language index being the value English and having a pointer to the text file. Another entry may comprise the value French with a pointer to another file. A further entry may comprise the value English with a pointer to a further file.
The structure or format of the metadata inside of the files in this embodiment is in Adobe's XMP (Extensible Metadata Platform) format. XMP has a particularly useful attribute. The metadata attributes in an XMP structure embedded in a file can be discovered in that file, even if the examining entity has no idea what kind of file it is or what is the structure or format of the file.
Indexing the metadata for a group of audio files, and using search engine techniques to find the metadata matches allows a user or process to obtain a specific audio file from a large group of files. For example, if a user wants to select one or more files from a large group of audio files the user would specify the attributes that the required file(s) must have. For example, suppose that the user wants audio files that were recorded by John, in English, and that say “Hello World”. There may be more than one file that matches this criteria, but in any case, that is what the user specifies. The metadata is sent to the storage system which then uses an indexing search engine to find and retrieve the desired file(s). If desired, the search engine can be used to make a list of the files that match the defined attribute criteria.
Using metadata to retrieve a desired file is particularly useful in IVR or voice automation systems, where prerecorded audio files or messages are played to callers on the phone. The selection of these prerecorded messages can be a complex process, as languages, speakers, and emotional tone of the conversation may change dynamically during an automated conversation between a caller and an automated system.
Packet 50 shows an audio file which preferably is a Resource Interchange File Format (RIFF) file which is the basis for the .wav format which was defined by Microsoft. This format is in chunks with a header for each chunk. Some chunks, such as chunk 52, are reserved for information about the file. Some chunks, such as chunk 51, are reserved for private use. The rule is that if an application that uses the file does not know what is in a chunk, ignore that chunk, but not remove it. Thus, chunk 51 is ignored, unless a reader (user) is programmed to deal with it. Using such a chunk defined specifically as an XMP metadata container, it is possible to put metadata into the file.
It is possible to use Adobe's protocol called Extensible Metadata Platform (XMP) which is an open standard for metadata and to define all the metadata elements using the XMP protocol. The XMP metadata block is discoverable by a metadata tool without knowing the format of the file. The XMP metadata format contains a unique code sequence at the beginning of the XMP data block. Thus, it is possible to scan through the file looking for a particular code sequence. Once that sequence is found the XMP metadata block will immediately follow, so the metadata it can be read without knowing anything about how the file is put together.
Chunk 51 can have embedded therein segment 501 (header) which is the unique code mentioned in the previous paragraph, segment 502 (metadata), segment 503 (trailer) and segment 504 (padding). The metadata can be, for example, the name of the VoiceXML document; the author of the VoiceXML; the date when the document was written; the description of what the message says; the language; etc.
Note that any of the functions described herein may be implemented in hardware, software, and/or firmware, and/or any combination thereof. When implemented in software, the elements of the present invention are essentially the code segments to perform the necessary tasks. The program or code segments can be stored in a processor readable medium. The “processor readable medium” may include any medium that can store or transfer information. Examples of the processor readable medium include an electronic circuit, a semiconductor memory device, a ROM, a flash memory, an erasable ROM (EROM), a floppy diskette, a compact disk CD-ROM, an optical disk, a hard disk, an optic medium, etc. The code segments may be downloaded via computer networks such as the Internet, Intranet, etc.
Bus 602 is also coupled to input/output (I/O) controller card 605, communications adapter card 611, user interface card 608, and display card 609. The I/O adapter card 605 connects to storage devices 606, such as one or more of a hard drive, a CD drive, a floppy disk drive, and/or a tape drive, to the computer system. Storage devices 606 may be used to store the files and indices of
Although the present invention and its advantages have been described in detail, it should be understood that various changes, substitutions and alterations can be made herein without departing from the spirit and scope of the invention as defined by the appended claims. Moreover, the scope of the present application is not intended to be limited to the particular embodiments of the process, machine, manufacture, composition of matter, means, methods and steps described in the specification. As one of ordinary skill in the art will readily appreciate from the disclosure of the present invention, processes, machines, manufacture, compositions of matter, means, methods, or steps, presently existing or later to be developed that perform substantially the same function or achieve substantially the same result as the corresponding embodiments described herein may be utilized according to the present invention. Accordingly, the appended claims are intended to include within their scope such processes, machines, manufacture, compositions of matter, means, methods, or steps.
The present application is related to copending and commonly assigned U.S. patent application Ser. No. _____ [Attorney Docket No. 47524-P138US-10501429] entitled “SYSTEM AND METHOD FOR RETRIEVING FILES FROM A FILE SERVER USING FILE ATTRIBUTES,” patent application Ser. No. ______ [Attorney Docket No. 47524-P139US-10503962] entitled “SYSTEM AND METHOD FOR RETRIEVING FILES FROM A FILE SERVER USING FILE ATTRIBUTES,” and patent application Ser. No. ______ [Attorney Docket No. 47524-P140US-10506201] entitled “SYSTEM AND METHOD FOR DEFINING, SYNTHESIZING AND RETRIEVING VARIABLE FIELD UTTERANCES FROM A FILE SERVER,” filed concurrently herewith, the disclosures of which are hereby incorporated by reference.