Database Operations and Data Manipulation Using Search-On-The-Fly
A method for searching for data among a plurality of disparate databases includes a processor: displaying an indication of contents of each of the plurality of disparate databases, comprising displaying a data field descriptor for one or more database fields of each of the plurality of disparate databases; receiving a search selection directed to one or more of the one or more database fields; returning a first search result comprising database entries matching the search selection; saving the first search result as a first temporary database; receiving a second search request directed to the first temporary database; returning a second search result comprising entries in the temporary database matching the further search request; and saving the second search result as a second temporary database.
Latest Vilox Technologies, LLC Patents:
- Database operations and data manipulation using search-on-the-fly
- SEARCH-ON-THE-FLY/SORT-ON-THE-FLY SEARCH ENGINE FOR SEARCHING DATABASES
- Search-on-the-fly/sort-on-the-fly by a search engine directed to a plurality of disparate data sources
- Search-on-the-fly/sort-on-the-fly search engine for searching databases
- Search-on-the-fly/sort-on-the-fly search engine for searching databases
This patent application is a continuation of patent application Ser. No. 14/214,700 filed Mar. 15, 2014 entitled Database Operations and Data Manipulation Using Search-On-The-Fly, which claims the benefit of provisional patent application Ser. No. 61/852,024 filed Mar. 15, 2013 entitled Database Operations and Data Manipulation Using Search-On-The-Fly, which is a continuation-in-part of U.S. patent application Ser. No. 11/979,255 entitled Search-On-The-Fly Search Engine, filed Oct. 31, 2007, which is a continuation of U.S. patent application Ser. No. 10/871,050, filed Jun. 21, 2004 entitled Search-On-The-Fly/Sort-On-The-Fly Search Engine, now U.S. Pat. No. 7,574,432, which is a division of U.S. patent application Ser. No. 09/513,340, filed Feb. 25, 2000, entitled Search-On-The-Fly/Sort-On-The-Fly Search Engine for Searching Databases, now U.S. Pat. No. 6,760,720. The disclosures of these patent applications and patents are hereby incorporated by reference in their entirety.
BACKGROUNDIn the most general sense, a database is a collection of data. Various architectures have been devised to organize data in a computerized database. Typically, a computerized database includes data stored in mass storage devices, such as tape drives, magnetic hard disk drives and optical drives. Three main database architectures are termed hierarchical, network and relational. A hierarchical database assigns different data types to different levels of the hierarchy. Links between data items on one level and data items on a different level are simple and direct. However, a single data item can appear multiple times in a hierarchical database and this creates data redundancy. To eliminate data redundancy, a network database stores data in nodes having direct access to any other node in the database. There is no need to duplicate data since all nodes are universally accessible. In a relational database, the basic unit of data is a relation. A relation corresponds to a table having rows, with each row called a tuple, and columns, with each column called an attribute. From a practical standpoint, rows represent records of related data and columns identify individual data elements. The order in which the rows and columns appear in a table has no significance. In a relational database, one can add a new column to a table without having to modify older applications that access other columns in the table. Relational databases thus provide flexibility to accommodate changing needs.
All databases require a consistent structure, termed a schema, to organize and manage the information. In a relational database, the schema is a collection of tables. Similarly, for each table, there is generally one schema to which it belongs. Once the schema is designed, a tool, known as a database management system (DBMS), is used to build the database and to operate on data within the database. The DBMS stores, retrieves and modifies data associated with the database. Lastly, to the extent possible, the DBMS protects data from corruption and unauthorized access.
A human user controls the DBMS by providing a sequence of commands selected from a data sublanguage. The syntax of data sublanguages varies widely. The American National Standards Institute (ANSI) and the International Organization for Standardization (ISO) have adopted Structured English Query Language (SQL) as a standard data sublanguage for relational databases. SQL comprises a data definition language (DDL), a data manipulation language (DML), and a data control language (DCL). The DDL allows users to define a database, to modify its structure and to destroy it. The DML provides the tools to enter, modify and extract data from the database. The DCL provides tools to protect data from corruption and unauthorized access. Although SQL is standardized, most implementations of the ANSI standard have subtle differences. Nonetheless, the standardization of SQL has greatly increased the utility of relational databases for many applications.
Although access to relational databases is facilitated by standard data sublanguages, users still must have detailed knowledge of the schema to obtain needed information from a database since one can design many different schemas to represent the storage of a given collection of information. For example, in an electronic commerce system, product information, such as product SKU, product name, product description, price, and tax code, may be stored in a single table within a relational database. In another electronic commerce system, product SKU, product name, description, and tax code may be stored in one table while product SKU and product price are stored in a separate table. In this situation, a SQL query designed to retrieve a product price from a database of the first electronic commerce system is not useful for retrieving the price for the same product in the other electronic system's database because the differences in schemas require the use of different SQL queries to retrieve product price. As a consequence, developers of retail applications accessing product information from relational databases may have to adapt their SQL queries to each individual schema. This, in turn, prevents their applications from being used in environments where there are a wide variety of databases having different schemas, such as the World Wide Web.
A further problem with conventional searches, search engines, data access and data retrieval is a tendency to return very large amounts of data, or to require the search parameters to be narrowed. When large amounts of data are presented, the display may take many “pages” before all data is seen by the user. The time and expense involved in such a data review may be significant, inconvenient, not user friendly or efficient.
SUMMARYSort-on-the-Fly/Search-on-the-Fly data retrieval methods and apparatus (hereafter, search-on-the-fly) provide an intuitive means for accessing or searching databases, allowing a user to access or obtain information about data in the database without having to know anything about the database structure. Sort-on-the-Fly/Search-on-the-Fly is an information gathering process or analysis process about data stored in one or more databases. The on-the-fly methods and apparatus often use or include sorting and searching. While Sort-on-the-Fly/Search-on-the-Fly may be a search engine or part of a search engine, it may also stand alone or make calls to a search engine. For example, database search engines may be used in conjunction with on-the-fly methods and apparatus.
Using Sort-on-the-Fly/Search-on-the-Fly, a user selects a desired term, and the user is delivered all instances of the desired term, even if a specific file or table does not contain the instance. For example, if a user wants to enter a database using the name of a specific individual as a database entry point, a database manager or other software will access the database using the desired name, and will organize the results so that all entries associated with that name are displayed. The database need not have a specific file (in a flat database) or a table (in a relational database) of names. The user may perform further on-the-fly searches or information retrieval to narrow or focus the results, or for other reasons. For example, given results for all names that include the name “Smith,” the user may then decide to obtain information for all “Smiths” that include an association to an address in New Jersey. Search-on-the-fly then conducts a further information gathering using these criteria and produces a second result. Further narrowing or broadening of the analysis is permitted, with search-on-the-fly returning results based on any new criteria.
In an embodiment, search-on-the-fly uses graphical user interfaces (GUIs) and one or more icons to make the information gathering process as efficient as possible. The GUIs may incorporate one or more pull down menus of available sorting terms. As a user selects an item from a first pulldown menu, a subsequent pulldown menu displays choices that are available for sorting or searching. The process may be continued or repeated until Sort-on-the-Fly/Search-on-the-Fly has retrieved or displayed a discrete data entry from the database. The pulldown menus are not pre-formatted. Instead, the pulldown menus are created “on-the-fly” as the user steps through the sort and/or search process. Thus, search-on-the-fly is inherently intuitive, and allows a user with little or no knowledge of the database contents, its organization, or a search engine search routine to execute comprehensive analysis, sorting and/or searches that return generally accurate results.
A data search and manipulation method includes accessing, by a processor, a first data element of a first data structure, the first data structure represented by a first icon, the first icon displayed in a user interface; accessing, by the processor, a second data element of a second data structure, the second data structure represented by a second icon displayed in the user interface; executing, by the processor, a first data manipulation process in response to the first icon dragged over the second icon; and executing, by the processor, a second data manipulation process in response to the second icon dragged over the first icon.
A method for searching data in a first database represented by a first icon and a second database represented by a second icon includes receiving a search request for a data element in the first database; returning the data element; responding to a first manipulation of the first and second icons, includes detecting a first move of the first icon over the second icon, identifying the first move as a first search request, the processor executing a first search operation in response to the first search request, and providing a first search result. The method further includes responding to a second manipulation of the first and second icons, including detecting a second move of the second icon over the first icon, identifying the second move as a second search request, the processor executing a second search operation in response to the second search request, and providing a second search result different from the first search result.
A system for searching and manipulating data, the data in a first database represented by a first icon and a second database represented by a second icon, includes a processor; and a computer-readable storage medium containing search-on-the-fly search and data manipulation instructions. The processor executes the instructions to receive a search request for a data element in the first database and return the data element. The processor responds to a first manipulation of the first and second icons. The processor detects a first move of the first icon over the second icon, identifies the first move as a first search request, executes a first search operation in response to the first search request, and provides a first search result. The processor responds to a second manipulation of the first and second icons. The processor detects a second move of the second icon over the first icon, identifies the second move as a second search request, executes a second search operation in response to the second search request, and provides a second search result different from the first search result.
In an embodiment, a method for searching for data among a plurality of disparate databases includes a processor: displaying an indication of contents of each of the plurality of disparate databases, comprising displaying a data field descriptor for one or more database fields of each of the plurality of disparate databases; receiving a search selection directed to one or more of the one or more database fields; returning a first search result comprising database entries matching the search selection; saving the first search result as a first temporary database; receiving a second search request directed to the first temporary database; returning a second search result comprising entries in the temporary database matching the further search request; and saving the second search result as a second temporary database.
Search-on-the-fly also searches on key words specified by the user. Search-on-the-fly can be used to exclude certain items. Search-on-the-fly incorporates other advanced features such as saving results by attaching a cookie to a user's computer, and associating icons with the results.
Search-on-the-fly may be used with both internal and external databases. For example, Search-on-the-fly may be used with a company internal database and one or more databases accessible through the Internet.
Search-on-the-fly is user-friendly. With one interface, many different types of databases or database schemas may be searched or sorted.
Finally, the search-on-the-fly technique, and other techniques discussed above may be used in conjunction with a method of doing business, particularly a business method that uses the Internet as a communications backbone.
The detailed description will refer to the following figures, in which like numerals refer to like objects, and in which:
Ordinary search engines place constraints on any search. In particular, a partial ordering of available search criteria limits application of the search engine only to certain search sequences. The user is given a choice of search sequences, and the order in which individual search steps in the search sequence become available limits the direction of the search. A user who desires to take a vacation cruise may use an Internet search engine to find a desired vacation package. The search begins with presentation of a list of general categories, and the user clicks on “travel,” which produces a list of subcategories. The user then clicks on “cruises” from the resulting list of subcategories, and so on in a cumulative narrowing of possibilities until the user finds the desired destination, date, cruise line, and price. The order in which choices become available amounts to a predefined “search tree,” and the unspoken assumption of the search engine designer is that the needs and thought processes of any user will naturally conform to this predefined search tree.
To an extent, predefined constraints are helpful in that predefined constraints allow a search engine to logically and impersonally order the user's thoughts in such a way that if the user has a clear idea of what object the user wants, and if the object is there to be found, then the user is assured of finding the object. Indeed, the user may want to know that choosing any available category in a search sequence will produce an exhaustive and disjunctive list of subcategories from which another choice can be made. Unfortunately, an unnecessarily high cost is too often paid for this knowledge: The user is unnecessarily locked into a limited set of choice sequences, and without sufficient prior knowledge of the object being sought, this limitation can become a hindrance. Specifically, where prescribed search constraints are incompatible with the associative relationships in the user's mind, a conflict can arise between the thought processes of the user and the function of the search engine.
At one time, such conflicts were written off to the unavoidable differences between computers and the human mind. However, some “differences” are neither unavoidable nor problematic. In the case of search engine design, the solution is elegant: upon selecting a category or entering a keyword, the user can be given not only a list of subcategories, but the option to apply previously available categories as well. In slightly more technical terms, the open topology of the search tree can be arbitrarily closed by permitting search sequences to loop and converge. Previous lists can be accessed and used as points of divergence from which new sub-sequences branch off, and the attributes corresponding to distinct sub-sequences can later be merged.
Sort-on-the-fly/search-on-the-fly data analysis, sorting access and retrieval methods and apparatus (hereafter, search-on-the-fly search engine) provide an intuitive means for analyzing various types of databases, allowing a user to obtain information about and/or access data in the database without having to know anything about the database structure. A user selects a desired term, and a database manager reviews the database for all instances of the desired term, even if a specific file or table does not contain the instance. For example, if a user wants to analyze the database using the name of a specific individual as a database entry point, the database manager will search the database or index using the desired name, and will organize the results so that all entries associated with that name are displayed. The database need not have a specific file (in a flat database) or a table (in a relational database) of names. The user may perform further on-the-fly searches to narrow the search results, or for other reasons. The search engine then conducts a further search using these criteria and produces a second search result. Further narrowing or broadening of the search are permitted, with the search engine returning results based on any new criteria.
This on-the-fly method or process can be used to simply analyze data or gather information about data stored in a database. The actual data itself does not need to be fetched, displayed, printed or even sorted. The user may simply wish to use this tool to “clean-up” data or understand how data could be sorted or for other reasons.
The system shown in
The search engine 125 may identify a database schema by simply using a trial and error process. Alternatively, the search engine 125 may use other techniques know in the art. Such techniques are described, for example, in U.S. Pat. No. 5,522,066, “Interface for Accessing Multiple Records Stored in Different File System Formats,” and U.S. Pat. No. 5,974,407, “Method and Apparatus for Implementing a Hierarchical Database Management System (HDBMS) Using a Relational Database Management System (RDBMS) and the Implementing Apparatus,” the disclosures of which is hereby incorporated by reference.
The search engine 125 provides search-on-the-fly search capabilities and more conventional search capabilities. In either case, the search engine 125 may perform a preliminary database access function to determine if the user has access to the database 12. The search engine 125 also determines the database schema to decide if the schema is compatible with the user's data processing system. If the database schema is not compatible with the user's processing system, the search engine 125 may attempt to perform necessary translations so that the user at the terminal 14 may access and view data in the database 12. Alternatively, the search engine 125 may provide a prompt for the user indicating incompatibility between the terminal 14 and a selected database.
The search engine 125 may conduct a search using one or more search cycles. A search cycle includes receipt of a request 114, any necessary formatting of the request 114, and any necessary truncation steps. The search cycle ends when a result list 175 is provided to the terminal 14. The search engine 125 may retain a status of each past and current search cycle so that the user can modify the search at a later time. The user may also use this feature of retaining a status of past and current search cycles to combine results of multiple searches, using, for example, a Boolean AND function, a Boolean OR function, or other logic function. The above listed functions will be described in more detail later.
The search-on-the-fly function of the search engine 125 begins by determining available data fields of the database 12. The database 12 may have its data organized in one or more data fields, tables, or other structures, and each such data field may be identified by a data field descriptor. In many cases, the data field descriptor includes enough text for the user at the terminal 14 to determine the general contents of the data field. The list of data fields may then be presented at the terminal 14, for example, in a pull down list. An example of such a data field result list is shown in
Using the terminal 14, the user may select one of the data field descriptors to be searched. For example, the user could select “city.” If a number of entries, or records, in the city data field is short, a further result list of complete city names may be displayed. If the entries are too numerous to be displayed within a standard screen size, for example, the search engine 125 may, in an iterative fashion, attempt to reduce, or truncate, the result list until the result list may be displayed. In the example shown in
The constraint collator 136 provides the updated request 115 (which may be an initial request, or a subsequent request) to the query generator 150. The constraint collator 136 is responsible for interpreting the request 114. The constraint collator 136 performs this function by comparing the request 114 against information stored in the status control 140. In particular, the constraint collator 136 sends the request status control signal 118 to the status control 140 and receives the request status response 119. The constraint collator 136 then compares the request status response 119 to constraint information provided with the request 114 to determine if the constraint status should be updated (e.g., because the request 114 includes a new constraint). In an embodiment, the constraint collator 136 compares constraint information in a current request 114 to constraint information residing in the status control 140, and if the current request 114 includes a new constraint, such as a new narrowing request (for example, when the user clicks, touches or points over a field shown in a last search cycle), then the constraint collator 136 adds the updated information and sends the updated request 115 to the query generator 150. If the constraint status should be updated, the constraint collator 136 sends the status update 118 to the status control 140. If the request 114 is a refresh request, the constraint collator 136 sends a reset command 131 to the database qualifier 160. The updated request 115 (possibly with a new constraint) is then sent to the query analyzer 150 for further processing.
The query generator 150 includes a truncator 152 and a dispatcher 154. The truncator 152 receives the updated request 115, including a new constraint, if applicable. The truncator 152 creates new queries, based on new constraints, and applies the new requests 151 to the database 12 using the database driver 170. Many different methods of truncating for display or viewing may be used by truncator 152. The truncator 152 may include a variable limit 155 that is set, for example, according to a capacity of the terminal 14 to display the search results 175. If data retrieved from the database 12 exceed the limit value, the truncator 152 adjusts a size (e.g., a number of entries or records) of the data until a displayable result list is achieved. One method of adjusting the size is by cycling (looping). Other methods may also be used to adjust the size of the result list. For example, the terminal 14 may be limited to displaying 20 lines of data (entries, records) from the database 12. The truncator 152 will cycle until the displayed result list is at most 20 lines. In an embodiment, the truncation process used by the truncator 152 assumes that if the user requests all values in a particular data field from the database 12, and there are no other constraints provided with the request 114, and if the size of the resulting result list is larger than some numeric parameter related to a display size of the terminal 14, then the constraints may be modified by the truncator 152 so that the result list can accommodated (e.g., displayed on one page) by the terminal 14. For example, instead of a full name of a city, some part of the name—the first n letters—is checked against the database 12 again, and n is reduced until the result list is small enough for the capacity of the terminal 14. If the maximum number of displayable results is three (3), and the database 12 contains the names of six cities “Armandia, Armonk, New Orleans, New York, Riverhead, Riverdale,” then the first attempt to “resolve” the result list will stop after a result list display is created with the full name of the cities: Armandia, Armonk, New Orleans . . . (the limit was reached) Try again with 7 characters: Armandia, Armonk, New Orl, New Yor, (limit reached again) Again with 5 characters: Armandia, Armonk, New O, New Y, (limit reached again) Again with 3 characters: Arm ( . . . ), New ( . . . ), Riv ( . . . ). These results may now be displayed on the terminal 14. The display of Arm, New, Riv can then be used to conduct a further search-on-the-fly. For example, a user could then select Riv for a further search-on-the-fly. The result list returned would then list two cities, namely Riverhead and Riverdale.
In another embodiment, a fixed format is imposed such that all queries generated against a database will have preset limits corresponding to the capacity of the terminal 14.
In yet another embodiment, the truncator 152 may adjust the field size by division or other means. For example, if the display limit has been reached, the truncator 125 may reduce the field size, X by a specified amount. In an embodiment, X may be divided by two. Alternatively, X may be multiplied by a number less than 1, such as ¾, for example. Adjusting the field size allows the search engine 125 to perform more focused searches and provides more accurate search results.
In another embodiment, the truncator first attempts to display information without truncation. If that is not appropriate, the truncator may attempt truncation by beginning with one character (26 letters and perhaps 10 digits) and incrementing to two characters and then three, four, until a failure to display is reached.
In still another embodiment, the user may select a limit that will cause the truncator 152 to adjust the field size. For example, the user could specify that a maximum of ten entries should be displayed.
For certain data fields, a terminal of a hand-held device, may have a very limited display capacity. For example, a personal data assistant (POA—see
Adjusting the data field size also provides more convenient search results for the user. For example, if a user were to access an Internet-based database for books for sale, and were to request a list of all book titles beginning with the letter “F,” a common search engine might return several hundred titles or more, displaying perhaps twenty titles (entries) at a time. The user would then have to look through each of many pages to find a desired title. This process could be very time-consuming and expensive. Furthermore, if the search results were too large, the common search engine might return a notice saying the results were too large for display and might prompt the user to select an alternative search request. However, performing the same search using the search engine 125 allows the truncator 152 to reduce the size of the information displayed to a manageable level. In this example, if the request 114 includes the constraint “F,” the truncator 152 will loop through the data in a data field that includes book titles starting with the letter “F” until a list is available that can fit within the display limits of the terminal 14, or that fits within a limit set by the user, for example. The first list returned to the terminal 14 as a result of this request 114 may be a two-letter combination with “F” as the first letter and a second letter of a book title as the second letter. For example, the first list may include the entries “Fa,” “Fe,” “Fi,” “Fo,” and “Fu,” all of which represent titles of books. The user could then select one of the entries “Fa,” “Fe,” “Fi,” “Fo,” and “Fu” to perform a further search, continuing the process until one or more desired titles are displayed. An example of a similar truncation result is shown in
When a parameter related to the search results is adequately truncated, the parameter is directed to the dispatcher 154, which retrieves the data from database 12 using the database driver 170. The dispatcher 154 then directs the final, truncated search results 175 back to the terminal 14 as a response to the request 114.
The status data module 142 may be reset by the database qualifier 160 with all available fields when a refresh function is used. In an embodiment, the refresh function may be used to clear all past search cycles and the current search cycle from the status control 140. In such an event, the search results, such as the search results shown in
Using the menu 203, the user has selected cities beginning with the letter “A.”. The results are shown in menu 205. Now, the user elects to conduct another search-on-the-fly, by selecting the “sort-on-the-fly” option 206. The query generator 150 displays all the information fields available from the database 200, except for the information field already displayed, namely “City.” The results are displayed in menu 207. The user then elects to further search on the data field “State.” The query generator 150 returns the requested information as displayed in menu 209, listing five states by their common two-letter abbreviation. The user then chooses New York from the menu 209, and the query generator 150 returns a list of cities in New York, menu 211.
Next, the user elects to conduct another search-on-the-fly, option 212, and the query generator 150 returns only the remaining data fields for display in menu 215. From the menu 215, the user selects “Address” for the next data field to search, and the query generator 150 returns a menu 217 showing only first letters of the address. This signifies that the data field “Address” was too large to be easily displayed on the terminal 14. The user then elects to search on all addresses that begin with “C.” The query generator 150 returns a list of addresses by displaying only street names, menu 219.
The user then elects to conduct a further search-on-the-fly, option 220, and the remaining two data fields, “Name” and “Phone” are displayed as options in menu 221. The user selects name, and the query generator returns a further breakdown of the data by last name and by first name, menu 223. This process continues, with further menus being used to select a last name and a first name from the database 200. When the final selection is made, information from the database 200 related to the individual is displayed in window 230.
In the example shown in
For the search results shown in
Status Control Started . . . Key: Title1 Option: Title Level: 1 Filter: Field: Title Key: A2 Option: A Level: 2 Filter: SUBSTRING([Title],1,1)=‘A’ Field: Title Key: AA3 Option: AA Level: 3 Filter: SUBSTRING([Title],1,2)=‘AA’ AND SUBSTRING([Title],1,1)=‘A’ Field: Title Key: F4 Option: F Level: 4 Filter: SUBSTRING([Title],1,1)=‘F’ Field: Title Key: Fa5 Option: Fa Level: 5 Filter: SUBSTRING([Title],1,2)=‘Fa’ AND SUBSTRING([Title],1,1)=‘F’ Field: Title Key: Favo6 Option: Favo Level: 6 Filter: SUBSTRING([Title],1,4)=‘Favo’ AND SUBSTRING([Title],1,2)=‘Fa’ AND SUBSTRING([Title],1,1)=‘F’ Field: Title Key: C7 Option: C Level: 7 Filter: SUBSTRING([Title],1,1)=‘C’ Field: Title Key: Ce8 Option: Ce Level: 8 Filter: SUBSTRING([Title],1,2)=‘Ce’ AND SUBSTRING([Title],1,1)=‘C’ Field: Title Key: Cells9 Option: Cells Level: 9 Filter: SUBSTRING([Title],1,5)=‘Cells’ AND SUBSTRING([Title],1,2)=‘Ce’ AND SUBSTRING([Title],1,1) ‘C’ Field: Title Key: Cellula10 Option: Cellula Level: 10 Filter: SUBSTRING([Title],1,7)=‘Cellula’ AND SUBSTRING([Title],1,2)=‘Ce’ AND SUBSTRING([Title],1,1)=‘C’ Field: Title Key: CC11 Option: CC Level: 11 Filter: SUBSTRING([Title],1,2)=‘CC’ AND SUBSTRING([Title],1,1)=‘C’ Field: Title
Status Control Terminated.
In the example illustrated by
The protocol analyzer 133 provides an output 135 to the constraint collator 136, and the constraint collator 136 determines the nature of the request, block 254. If the request 114 is a refresh request (i.e., a command to initiate the refresh function), the constraint collator 136 sends a reset command 131 to the database qualifier 160. The updated request 115 (possibly with a new constraint) is then sent to the query analyzer 150 for further processing, including analyzing the database 12, retrieving field descriptors, and formatting, block 256. The result of the data field descriptor retrieval and formatting are shown as an available data fields result list, block 258, and is returned to the terminal 14, block 260.
In block 254, if the request 114 is not a refresh request, the constraint collator 136 provides the updated request 115 (which may be an initial request, or a subsequent request) to the query generator 150, block 264. The constraint collator 136 compares the request 114 against information stored in the status control 140. In particular, the constraint collator 136 sends the request status control signal 118 to the status control 140 and receives the request status response 119. The constraint collator 136 then compares the request status response 119 to constraint information provided with the request 114 to determine if the constraint status should be updated (e.g., because the request 114 includes a new constraint). If the constraint status should be updated, the constraint collator 136 calls create new constraint subroutine 270, and creates new constraints.
The create new constraints subroutine 270 is shown as a flowchart in
In block 274, if sort-on-the-fly was not selected, the request analyzer 130 may receive a key word constraint, block 276. The query generator 150 will then generate an input window in which the user may enter a desired key word, block 282. Alternatively, the query generator 150 may prompt the user to enter a key word using voice recognition techniques, or any other way of entering data. The process then moves to block 284. In block 276, if a key word search option was not selected, the constraint collator 136 enters the new constraint to the existing list of constraints, block 278. The process then moves to block 284.
Returning to
As noted above, the request analyzer 130 determines the nature of the request, including any special commands. A special command may include a command to conduct a search-on-the-fly. Alternatively, the search engine 125 may adopt a search-on-the-fly mechanism as a default value. The search engine 125 also may incorporate other special search commands, such as a Boolean search, for example.
The examples illustrated in
As noted above, the search engine 125 may be used for multiple searches and may be used to search multiple databases, including databases with different schemas. The results of individual searches, including the control data provided in the status control 140, are saved. The search engine 125 may then be used to further sort (search), or otherwise operate on, the results of these multiple searches. In an embodiment, the search engine 125 may perform a Boolean AND operation on two search results. The result of the Boolean AND operation would be a list of records, or entries, that are common to the two search results.
In
Continuing with the example, the user may use the search engine 125 to conduct a search-on-the-fly of the recordings database 412 and the Virgin Records™ database 422. The user may search both databases 412 and 422 for titles of recordings that are classified as “blues.” The search engine 125 may return search results 416 and 424 for searches of both databases 412 and 422, respectively. The search results 416 and 424 may be displayed in a window section 430 of the GUI 400. The results 416 and 424 may also be represented by CD icons, such as the icons 432 and 434. The search results 416 and 424 may be stored as lists in one or more temporary databases, as represented by the windows 417 and 427. The search results 416 and 424 may also be stored in a scratch pad database 418. At this point, the user may wish to determine which recordings from the list 424 are contained in the list 416. The search engine may support this function by performing a Boolean AND operation of the lists 416 and 424. The results of the Boolean AND operation are represented by the icon 436 displayed in the window 430. To execute the Boolean AND operation, the user may simply drag the icon 432 over the icon 434, and then select AND from a pop-up menu 438 that appears when the icons 432 and 434 intersect. Other techniques to execute the Boolean AND (or another Boolean function) may include typing in a command in a window, using voice recognition techniques, and other methods. In addition, other Boolean functions may be used.
The result represented by the icon 436 of the Boolean AND operation may then be stored in a database at the terminal 14, such as in the scratch pad database 418 or may be stored at another location. The result may then be subjected to further search-on-the-fly operations.
Also shown in
Use of the search engine 125 may be facilitated by one or more GUIs that are displayed on the terminal 14.
The user may continue to search the medicines database 478 using key word techniques and search-on-the-fly techniques.
The SOF search engine 125 may accommodate merging of one or more sets of search results. The multiple search results may be derived from a common database, or from more than one database. A search using the search engine 125 may be controlled through a user interface by one or more icons that can represent (1) filters or (2) the images of filters. Thus, the icon may represent spatial or temporal attributes, or sets of objects or procedures. Merging the icons thus has two interpretations corresponding to (1) and (2): either filters are added (“apply every filter in every icon to every image to which it can be applied”), or image sets are added. In an alternative embodiment, the addition (union or join) operator may be any other relational operator, e.g. divide, difference.
In various aspects, the SOF search engine 125 provides many unique and powerful database operations. These operations in data manipulation that involves chirality; faceted search and facet manipulation; including facet rotation, dynamic data functions, including database content exposition involving, for example, dynamic pull down menus, data rotation; taxonomy control, variation, and biasing; database and database cleansing; data visualization; data parsing, re-amalgamation, retagging, and database repopulation; and diverse data mining operations. The SOF search engine 125 provides an intuitive computer-human interface that matches the unique parallel processing of the human brain and the rapid serial processing of a digital computer. These aspects of the SOF search engine 125 make possible many additional features and information display and data manipulation products and services, including data representation and manipulation through icon combinational variance, not available with current database management systems and concepts. These aspects of the SOF search engine 125 are disclosed above, and are shown in
The SOF SE 125 allows for chiral manipulation of data objects. A human left hand has a chiral representation to a human right hand. When closed, the left hand is a non-superposable mirror image of the right hand; no matter how the two hands are oriented, it is impossible for all the major features of both hands to coincide. Chiral manipulation of data objects using SOF SE technology may be understood with reference to
As noted above, GUI 450, shown for example in
The icons of GUI 450 are data objects. Manipulation of the icons illustrates the chiral nature of their data representation. For example, the patients' database 472 is represented by an address card file icon 472A. Pharmacy data base 476 is represented by a pharmacy icon 476A. Medical database 478 is represented by medical icon 478A. Dragging the patients' database icon 472A over the pharmacy icon 476A (path A,
Referring to
As may be appreciated by reference to
Search-on-the-fly technology, as disclosed herein, permits a rich-exposition of data from any database or merge of multiple databases. In viewing a database, the database fields generally are shown as a flat, two-dimensional structure; namely a page or sheet of paper. However, using a SOF search engine 125, this ordinary representation of data may be enhanced significantly to show all the rich variation of data possible in a faceted search. Rather than the “sheet of paper” view of data, the SOF search engine 125 may be used to present the data in one of a number of facets of a solid object. Consider a database that has six dimensions. Referring to
However, even more information is available using the power of the SOF search engine 125. Consider now how the original six dimensions would appear if expressed in a solid, or body of revolution. For six dimensions, such a solid, with equal sized facets, would be a cube. The SOF search engine 125 may render the database 478 on the GUI 450 as a cube, with each dimension occupying a facet of the cube.
Note that any facet of the cube may display further search results when a search on any one dimension is conducted. Note also that if the contents of any database would exceed the display capacity of a facet, the results may be truncated. Thus, and considering the search results shown in
As an alternative, the SOF search engine 125, when displaying search results in the graphical form of a faceted solid, may resize the solid when the results of a search iteration produce a smaller number of entries in a facet than existed before the search. That is, the cube may shrink. Correspondingly, the cube may expand when the number increases.
As another alternative, each iteration of the search may produce a unique cube, smaller or larger in size than its predecessor. Thus, a search with three iterations may produce three cubes, each of which may be displayed in the GUI, and each of which may differ in size from the others. See
The SOF search engine 125, and associated search technology, then, may be used to create any shape with any number of facets. The solid (image) produced by this process takes on an appearance similar to that of a soccer ball, with facets for panels of the ball, when the number of database dimensions increases. Each such facet, or panel of the solid is an entry point into the overall database or data structure represented by the solid. The solid may be manipulated by “reaching in” to a specific facet and “viewing by” the data as shown, for example, in a flat view, by
As is shown in
Another powerful aspect of the SOF search engine 125 is the ability to merge databases, data sets, data dimensions, and data in an intuitive fashion that convey the rich power of search-on-the-fly technology. Consider databases 476 and 478, shown in
In addition to the above-disclosed features, a solid such as the eight-sided solid of
In addition to the above-described control features, the GUI 450 may incorporate touch screen displays, and the solid may be rotated along an infinite number of axes, much like spinning a globe or rolling a ball.
Dynamic Pull Down MenuThe SOF search engine 125, as disclosed previously, produces dynamic search results. Referring again to
Note that this feature applies to all databases accessible by the SOF search engine 125. In
The SOF search engine 125 permits powerful data parsing and re-labeling, and database repopulation. Consider the data search results shown in
A powerful feature of search-on-the-fly searching is the ability of the SOF search engine 125 to explicitly and clearly show errors and inconsistencies in any database. Consider the search results shown in
Once detected, the user need only select the erroneous entry and a correct entry, and with a single ‘cleanse” command, correct the error—the SOF search engine 125 performs a merge of the two data entries and replaces the erroneous entry with a correct entry.
Virtual Scratch PadA virtual scratch pad allows a user to maintain data in a convenient, easy to access, review, and manipulate area of the terminal 14. Virtual scratch pad database 480 is illustrated, for example, in
While using search on the fly has been described in detail for an end result of printing, viewing or displaying data, search on the fly can be useful for other purposes. Search on the fly does not require obtaining the underlying data in the database or the display of the underlying data to be useful. Search on the fly can be used for gathering information or characteristics about data in a database with or without downloading the data itself. This gathered information about the data can be used to analyze the data, sorting, correct or clean data, verifications and confirmations. For example, search on the fly can be used to determine whether there is existing data in a database within certain ranges or parameters (date ranges, numerical, alphanumerical and other characteristics). If there is data within certain parameters, the number of datapoints within those parameters can also be determined. This information about the data can be gathered using search on the fly with queries to the database manager (which may simply need to query its index and not access the data itself). Another example is correcting data. Data may need to be corrected or cleaned for various reasons including spelling errors. Search on the fly can locate these errors without necessarily accessing and downloading the data itself. Certain combinations of characters or truncations will be obvious spelling errors. Also, data that is out of range can be located and corrected or eliminated from the database using search on the fly. Another example is data from one database can be confirmed or verified against data in a second database using search on the fly. Those skilled in the art will find many uses and specific applications for search on the fly.
Certain of the devices shown in the herein described figures include a computing system. The computing system includes a processor (CPU) and a system bus that couples various system components including a system memory such as read only memory (ROM) and random access memory (RAM), to the processor. Other system memory may be available for use as well. The computing system may include more than one processor or a group or cluster of computing system networked together to provide greater processing capability.
The system bus may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. A basic input/output (BIOS) stored in the ROM or the like, may provide basic routines that help to transfer information between elements within the computing system, such as during start-up. The computing system further includes data stores, which maintain a database according to known database management systems. The data stores may be embodied in many forms, such as a hard disk drive, a magnetic disk drive, an optical disk drive, tape drive, or another type of computer readable media which can store data that are accessible by the processor, such as magnetic cassettes, flash memory cards, digital versatile disks, cartridges, random access memories (RAM) and, read only memory (ROM). The data stores may be connected to the system bus by a drive interface. The data stores provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the computing system.
To enable human (and in some instances, machine) user interaction, the computing system may include an input device, such as a microphone for speech and audio, a touch sensitive screen for gesture or graphical input, keyboard, mouse, motion input, and so forth. An output device can include one or more of a number of output mechanisms. In some instances, multimodal systems enable a user to provide multiple types of input to communicate with the computing system. A communications interface generally enables the computing device system to communicate with one or more other computing devices using various communication and network protocols.
The preceding disclosure refers to flowcharts and accompanying descriptions to illustrate the embodiments represented in the Figures. The disclosed devices, components, and systems contemplate using or implementing any suitable technique for performing the steps illustrated. Thus, in the Figures, the described or similar steps may be performed at any appropriate time, including concurrently, individually, or in combination. In addition, many of the steps in the flow charts may take place simultaneously and/or in different orders than as shown and described. Moreover, the disclosed systems may use processes and methods with additional, fewer, and/or different steps.
Embodiments disclosed herein can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the herein disclosed structures and their equivalents. Some embodiments can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage medium for execution by one or more processors. A computer storage medium can be, or can be included in, a computer-readable storage device, a computer-readable storage substrate, or a random or serial access memory. The computer storage medium can also be, or can be included in, one or more separate physical components or media such as multiple CDs, disks, or other storage devices. The computer readable storage medium does not include a transitory signal.
The herein disclosed methods can be implemented as operations performed by a processor on data stored on one or more computer-readable storage devices or received from other sources.
A computer program (also known as a program, module, engine, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub-programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The terms and descriptions used herein are set forth by way of illustration only and are not meant as limitations. Those skilled in the art will recognize that many variations are possible within the spirit and scope of the invention as defined in the following claims, and there equivalents, in which all terms are to be understood in their broadest possible sense unless otherwise indicated.
Claims
1. A method for searching for data among a plurality of disparate databases, comprising:
- displaying an indication of contents of each of the plurality of disparate databases, comprising displaying a data field descriptor for one or more database fields of each of the plurality of disparate databases;
- receiving a search selection directed to one or more of the one or more database fields;
- returning a first search result comprising database entries matching the search selection;
- saving the first search result as a first temporary database;
- receiving a second search request directed to the first temporary database;
- returning a second search result comprising entries in the temporary database matching the further search request; and
- saving the second search result as a second temporary database.
2. The method of claim 1, wherein the search result comprises database entries from at least two disparate databases, the method comprising:
- creating a merged search result by merging first search results from a first disparate database with subsequent search results from one or more additional disparate databases; and
- displaying the merged search result as a third temporary database.
3. The method of claim 1, wherein the first and second search results comprise iconic representations of the database entries.
4. The method of claim 1, further comprising displaying each of the plurality of disparate databases and the temporary databases on the user interface as a solid of revolution.
5. The method of claim 4, comprising displaying the database fields on the user interface as facets of solids of revolution.
6. The method of claim 5, comprising:
- executing a Boolean OR search operation by dragging a first solid of revolution over a second solid of revolution; and
- executing a Boolean AND search operation by dragging the second solid of revolution over the first solid of revolution.
7. The method of claim 6,
- wherein the first and second solids of revolution include at least one facet having a common data field descriptor;
- wherein the first solid of revolution includes N facets and the second solid of revolution includes M facets; and
- wherein the Boolean OR operation produces a third solid of revolution having ((N+M)−1) facets, the method comprising: combining the data field entries of the facets having the common data field descriptor, and displaying the third solid of revolution on the user interface.
8. The method of claim 7, comprising displaying the third solid of revolution with facets from the first solid of revolution in a first color, facets from the second solid of revolution in a second color, and combined facets in a third color.
9. The method of claim 6,
- wherein the first and second solids of revolution include P facets having a common data field descriptor;
- wherein the first solid of revolution includes N facets and the second solid of revolution includes M facets;
- wherein P<N and P<M; and
- wherein the Boolean AND operation produces a third database list having P data fields, the method comprising: selecting the P facets having the common data field descriptor, and displaying the third database list on the user interface.
10. The method of claim 9, wherein P is greater than or equal to four, the method comprising displaying the third database list as a third solid of revolution.
11. The method of claim 6, further comprising:
- through the user interface, receiving rotation commands from a user;
- rotating one or more of the solids of revolution; and
- displaying rotated ones of the solids of revolutions on the user interface.
12. The method of claim 4, comprising displaying the data fields as lists in flat displays on the user interface.
13. The method of claim 12, comprising unfolding the solids of revolution to generate the flat displays.
14. The method of claim 4, wherein each solid of revolution has four or more facets.
15. The method of claim 4, comprising:
- displaying the first search result as a first solid of revolution having N facets; and
- displaying the second search result as a second solid of revolution having N facets, wherein the second solid of revolution is smaller than the first solid of revolution.
16. The method of claim 4, comprising:
- displaying the first search result as a first solid of revolution having N facets; and
- displaying the second search result as a second solid of revolution having N facets, wherein the second solid of revolution is larger than the first solid of revolution.
17. The method of claim 1, wherein the first search result comprises a dynamic pull down list, and wherein the first search result includes only those data fields for which at least one of the disparate databases contains the search selection.
18. A non-transitory computer-readable storage medium containing search-on-the-fly search and data manipulation instructions searching for data among a plurality of disparate databases, the instructions when executed by a processor, causing the processor to:
- display an indication of contents of each of the plurality of disparate databases, wherein the processor causes display of a data field descriptor for one or more database fields of each of the plurality of disparate databases;
- receive a search selection directed to one or more of the one or more database fields;
- return a first search result comprising database entries matching the search selection;
- save the first search result as a first temporary database;
- receive a second search request directed to the first temporary database;
- return a second search result comprising entries in the temporary database matching the further search request; and
- save the second search result as a second temporary database.
19. The computer-readable storage medium of claim 1, wherein the search result comprises database entries from at least two disparate databases, and wherein the processor:
- creates a merged search result by merging first search results from a first disparate database with subsequent search results from one or more additional disparate databases; and
- displays the merged search result as a third temporary database.
Type: Application
Filed: Aug 20, 2019
Publication Date: Dec 5, 2019
Applicant: Vilox Technologies, LLC (Plano, TX)
Inventor: Joseph L. De Bellis (Southampton, NY)
Application Number: 16/545,038