METHOD FOR STRUCTURING AND SEARCHING INFORMATION

Abstract: A system for structuring digitally stored information and methods for searching the resulting structure are described. The inventive structuring system for a target database comprises generating at least one index/wordlist for all the information existing in the target database. A table providing target database position information for the information in the index/wordlist, is also a necessary element in the structuring system. The structure of the index system in itself provides fast and simple access to the information contained therein. The information structuring system and the methods for structuring and searching digitally stored information has a variety of uses e.g. searching large databases, in a search engine, a mobile phone, WAP or as a search system for retrieving files and controlling the information stored in a LAN or computer hard disk.

Description: METHOD FOR STRUCTURING AND SEARCHING INFORMATION FIELD OF THE INVENTION The present invention relates to a system and method for structuring digitally stored information and a method for searching this information. A computer program product and uses of the system and methods are also disclosed. Especially, the invention addresses the problem of searching large information spaces/databases, like e.g. a national telephone directory, large file systems or the Internet. DESCRIPTION OF THE PRIOR ART The existing and increasing amount of information available today in an electronic form, places heavy demands on computer hardware as regards e.g. memory capacity and processor speed when searching in this information. Information in electronic form is e.g. network versions of telephone directories, customer registers, information files stored on computer hard disks or on network servers (e.g. LAN, WAN), or www pages. The digital information may be organized and stored in large databases, and retrieving information from these structures requires complex search routines, powerful processors and storage capacity. However, It may still be a time consuming and tedious process to retrieve information as desired from these databases. Complex search interfaces are time- consuming and inaccessible for the average user, and useful search functions are also increasingly important to e-commerce and information services. Binary search is often utilized when searching database structures. Binary search is a search algorithm that repeatedly divides an ordered search space in half according to how the required value compares with the middle element. When searching large databases, this becomes a time consuming process, as the entire database must be searched at least once. Usually, searches are performed in selected columns only in the database. If it is necessary to combine information arranged in different columns in the database for achieving a usable and mean- ingful search result, and the database is large, the search procedure may take a very long time, and is sometimes not performable due to the huge number of possible combinations of the information arranged in the cells in the different columns. It is also a problem if a search request, in e.g. a database or any another informa- tion space, results in large amounts of hits, how this information should be presented for the user in a usable and meaningful manner. Searching is often elaborate and contrasts users always demanding information presented in an instant. SUMMARY OF THE INVENTION The present invention has been conceived to solve or at least alleviate the problems of the prior art as described above. Thus, in accordance with a first aspect of the present invention there is provided a system for structuring digitally stored information, the system being included in a data processing system, the structuring system comprising: - a database comprising a number of cells arranged in rows and columns holding pieces of data representing the information, the pieces of data contained in cells in one row of the database constituting a certain information; - at least one index table providing information concerning all locations of each unique piece of data in the database; -a main index listing once all the unique pieces of data in the database together with corresponding index table identifiers, the index table identifiers providing links to the corresponding index table for said pieces of data. The main index may comprise information of the number of occurrences for each unique piece of data in the database. An additional index may also be linked to the main index comprising synonym information for the unique pieces of data occurring in the main index. The locations may be expressed by coordinates, the coordinates defining the cells in the database, and the position of the word in the record. Preferably the coordinates are (x, y) coordinate pairs representing respectively the columns and rows in the database. The coordinate pairs in the index tables are then first sorted according to the absolute value of the x coordinates and second according to the value of the y coordinate. The pieces of data with the highest absolute values of x have by definition a higher relevance than pieces of data with lower absolute values of x. By relevance means that the pieces of data found to best describe the represented information are assigned a high x value. In one embodiment the database may also comprise an address or link to the digitally stored information represented by the pieces of data contained in each row in the database. The pieces of data contained in cells in one row in the database may e.g. represent a search string associated with an URL address or a file path. The digitally stored information may represent a telephone directory. In a second aspect the invention provides a method in a data processing system for structuring digitally stored information, the method comprising: - processing the information in a data processing unit and storing pieces of data representative of the information in cells in a database, the cells in the database being arranged in rows and columns, all the cells in the same row in the database constituting a certain information; - creating at least one index comprising information of all locations of all unique pieces of data in the database; and - creating a main index listing once all the unique pieces of data occurring in the database together with a corresponding index identifier providing a link to the corresponding index for a unique piece of data. An additional index linked to the main index may be created comprising synonym information for the unique pieces of data occurring in the main index. In an alternative embodiment of the invented method an indexing agent is used for indexing the stored information. This indexing agent may be a spider, web crawler or any other suitable agent. Preferably, the information is processed and the pieces of data representative of the information arranged in the database in such a way that pieces of data assigned high absolute values of the x coordinates are more descriptive for the represented information than pieces of data assigned lower absolute values of the x coordinates. The pieces of data may be keywords describing the digitally stored information. When the keywords contained in cells in each row in the database constitute a search string, the method further comprising creating an index for each position a unique keyword occurs in the search strings, and creating a corresponding index identifier associated with the keyword in the main index. A resource locator for the processed information may be included in each row in the database, providing a link to the digitally stored information. In yet another aspect the invention provides a method in a data processing system for structuring digitally stored information. In this embodiment the information is already contained in some kind of database structure or view. The method comprising: processing the information in a data processing unit and creating at least one index comprising information of all locations of all unique pieces of data in the database; and creating a main index listing once all the unique pieces of data occurring in the database together with a corresponding index identifier providing a link to the corresponding index for a unique piece of data. In another aspect the invention provides a method in a data processing system for searching digitally stored information, the information being structured in a database/index system as defined above, the method comprising: - inputting a desired information through an interface; - searching the main index table selecting pieces of data corresponding to the de- sired information and thereby selecting index tables; - searching the selected index tables selecting at least one location of a cell in the database containing the desired information; and - selecting the row in the database in which the ceil is located and retrieving the desired information. In an embodiment, when the desired information is expressed in the form of a sequenced keyword search string, the method further comprising determining the order of the keyword in the sequence of keywords, and selecting index tables corresponding both to the desired information and the order of the keyword in the input search string. The desired information may be input through a search engine interface, and the retrieved information displayed in a display device. A typical display device may be a computer screen, but also the display on a mobile phone or WAP. In a forth aspect the invention provides a computer program product for a data processing system, comprising a computer readable medium, having thereon computer readable program means, which when loaded into an internal memory of a data processing system, makes the data processing system perform the structuring method as defined above. A computer program product for a data processing system is also provided, comprising computer readable code means which, when loaded into an internal memory of a data processing system, makes the data processing system perform the search method as defined above. The invention also provides computer programs for the methods outlined above, embodied on a record medium, stored in a computer memory, embodied in a read-only memory or carried on a signal carrier. The program may be in the form of e.g. source code or object code, or in any other form suitable for use in the implementation of the process according to the invention. The carrier may be any entity or device capable of carrying the program, such as a CD-ROM or magnetic recording medium, or a transmissible carrier such as an electrical or optical signal. The invention provides a solution for organizing and searching information in an efficient manner, and presenting the information in an instantly usable way. The invented solution provides faster processing by minimising the search itself, and results in reduced costs for running and upgrading the search system. Information can easily be added and deleted, and provided independent of the search language used. The process of building the index is simple. When the software is installed and searchable databases and fields are specified, the index building can start. The inventive index building leaves all existing data and functionality untouched. The index building may take several hours or days depending on the size and complexity of the database. Once the index is built, it will be updated in real-time, and no further re-indexing is needed. A database may be indexed on a simple PC. The invention is defined in the appended claims. BRIEF DESCRIPTION OF DRAWINGS The above and further advantages may be more fully understood by refer- ring to the following description and accompanying drawings of which: Figure 1A is example data, which may be processed by the present invention, Figure 1 B is an example of an extract of a main index for the data in Figure 1A according to an embodiment of the invention, Figure 1 C is an example of an index table for the word in the wordlist in Figure 1 B according to an embodiment of the invention, Figure 2 is an example of created indexes, wordlist and coordinate table, for the target table according to an embodiment of the invention, Figure 3 shows a wordlist with an assigned synonym wordlist according to an embodiment of the invention, Figure 4 is a schematic of a hosted solution for the indexing method and search system according to an embodiment of the invention, Figure 5 shows an extract of a left part of a content database according to an embodiment of the invention; Figure 6 is an extract of a main index table according to an embodiment of the invention; Figure 7 is a part of an index table according to an embodiment of the invention; Figure 8 is an extract of a list with IMP numbers, each IMP number representing a string of search terms, according to an embodiment of the invention; Figure 9 shows a right part of a content database with search strings represented both by words and IMP numbers according to an embodiment of the invention; Figure 10 shows a left part of the content database in figure 9 and with the row and column coordinates displayed; Figure 11 is a part of an index table for the word "landing" according to an embodiment of the invention; Figure 12 is an extract of a main index table according to an embodiment of the invention; Figure 13 is a first part of an index table for a word in the firstref column shown in figure 12; and Figure 14 is a part of an index table for a word in the secondref column shown in figure 12. DESCRIPTION OF THE INVENTION The present invention relates to database structures capable of storing huge amounts of information, which can easily be retrieved even with standard computer systems. A method for processing and structuring digitally stored information in such a structure is also presented. The invention will first be described in a generalized way and then by the use of examples of possible implementations of the invention. The examples shall however not be considered limiting for the scope of the invention. Information in the context of the present invention shall be understood in the widest sense, but the information must exist in some sort of electronic form, e.g. in a processor, memory means or storage device. Information may be a Word or Excel file in your computer hard disk, listings in an online telephone directory, pages on the World Wide Web, etc. The database structure and data are physically stored in some sort of storage device. Data in this context may be e.g. words, letters, symbols, numbers or digits etc. The described methods are carried out in digital processing devices comprising a processor and memory. The memory may e.g. be a RAM or ROM. The database structure The basic structure of the database system is a word list and a coordinate table. An example of a word list and coordinate table are shown in Figure 2. The inventive database system may be built from information existing in large databases or from collected and structured information. The principle for building the index and coordinate table will be described in relation to a telephone directory. Example data are shown in Figure 1 A, the data source comprising information concerning, first name, last name, address, zip code and city, will be referred to as the target database in the following explanation. Only a very small part of a telephone directory is shown in Figure 1A for purpose of illustration. Each row in the target database must have an assigned unique ID field containing a numeric value. The index building process starts on the first row and first column in the database in Figure 1A. The first word in the target database is Tom. The processor checks in the wordlist for occurrences of the word Tom and if it has been assigned a numeric value. In this case, there is no previous occurrences, and Tom is also the first word, so it is assigned the ID value 1 and added to the wordlist. The wordlist now shows the word with ID number and number of occurrences for the word in the target table. A reference for the word "Tom" is then stored in a coordinate table. The coordinate table shown in Figure 1 C, holds information of the exact position of each information element in the target table. The coordinate table comprises the following information: Word no: the value of a unique information element. E.g. Tom. RowlD: the ID assigned to each row in the target table, in which the data record is physically stored. Position: the 3 first digits are the column number. The following digit(s) is the total position of the unique information element in that row in the target table. For each information element the position is counted, so if we had a second word in the first column, as e.g. seen in the address field in Figure 1A, the position reference number would be 1002 in the coordinate table. The position reference number is used for ranking methods used to sort a search result. The completed wordlist and coordinate tables for the target table in Figure 1A are shown in Figure 2. In the word list, each unique information element in the target database has been assigned a record with information concerning the ID value and the number of occurrences for each unique information element in the target database. The word "Tom" occurs twice in the target database, once in the first name field and once in the address field, and has therefore count value 2. "Hansen" is both a last name and city. As can be seen from Figure 2, the index building program starts by reading the content in the first column in the first row and proceeds by reading the content in column two in row one, and reads in this way row by row. The coordinate table are built together with the index table. The unique information element "Paris" occurs as unique word number 7 in the target database. Therefore, there are two consecutive 7s in the word no column in the coordinate table. The first "Paris" is however occurring in row with ID number 1 and occurrence number two for "Paris" is in row with ID number 2. The first "Paris" occurs in column 104, (the first column (first name) is column 100), as information element 7. (The address field in the first row in the target database contains three information elements.) Therefore, the position is 1047. This number is later used in ranking the data, which is an additional functionality. The index building program is generated directly in SQL code, and no installation is therefore required. The sequence in which the target database is processed, decides the hit priority when later using the rank program to sort the result to be displayed. This is used to define the importance of a hit. If you define that a hit in the first name column is more important than a hit in the city column, you simply select the first name column prior to the city column. Synonyms Additional functionality to the database system will be achieved by building an additional table containing a synonym wordlist. An example of a wordlist with assigned synonym wordlist is shown in Figure 3. Assigned synonyms of a Word in the Wordlist are identified by using the same ID value. Tommy and Ton are the synonyms of the word Tom (ID=1), and Franc and EU are synonyms of Paris. This enables customisation of the search function, and the additional table can be built manually by the customer or generated by using synonym standards by a system administrator. This table is connected to the original wordlist. In this example, a search for Tommy will give the same result as a search for Tom. The way to build synonyms and what to build synonyms on is to be decided by the customer. In this way, search intelligence can be added to the database solution. A different way to use the synonym wordlist is importing other languages to make the search language independent. Tuning From analysing the amount and the structure of the data in the target database, combined with a report defining the available hardware resources and the number of users searching in the data, the first tuning can be made. This analyse process helps in deciding what standard indexes to use on the different information elements in the coordinate table, how to use the cut function and the word suggestion parameter, which will be described later. It is possible to make a new tuning of the system, when actual user behaviour is analysed at a later stage. Search function The search function is built as a stored procedure that can be called by a simple code. The search procedure can be called by user input through an input device, like e.g. mouse, keyboard, touch screen, voice etc from a user requesting information from the target database. The search requester may ask for a word or combination of words, describing the desired information. The search is performed by a SQL procedure, and the syntax of this search is not unlike a standard SQL syntax. The index is built as tables, making the invention suitable for customers using a hosting service. A hosted solution is shown in Figure 4. In Figure 4, a number of indexed databases for different customers are stored on the IMP server. The searches are performed via a user interface for the IMP database. Example IMPSearch 'the information you are looking for','*,'*', 100,1 , -'enter additional SQL' IMPsearch "your search string"," columns to search (*=all)"," columns to show'V'resultset order", no of hits to show, IMP word suggestion options ( -1 or 0 or 1 ), "additional statements to the query" This procedure is also listed below: IMPsearch Your search string Columns to search (*=all) Columns to show • Result set order No of hits to show IMP word suggestion options ( -1 or 0 or 1 ) Additional statements to the query Word suggestion options If there is a spelling error in the words describing the desired information, the search program suggests a word from the actual word list, built on the basis of the data in the target database. The user may choose which word suggestion option to be used, or a particular option can be made standard for the buyers of this product. -1 : shows the result set based on the words found in the word list 0 : shows the word suggestion, a search will not be performed until all words are found 1 : shows the result set based on the words found in the word list, and shows suggestions for the words not found in the word list. The logic of the search and word suggestion The search is performed in the following steps, in this example the word suggestion parameter is set to 0 = "If words not are found, do not perform the search, but give word suggestion" 1. Search for the information elements in the wordlist in a cluster index that is built on top of the index table. a) If all information elements are found go to step 2 b) If all information elements cannot be found go to step a 2. Hold the ID values for the found information elements. 3. Find the records in the coordinate table where the wordno correspond to the ID values defined in step 2, and select the ID ' s where all the words are found with the same rowlD (this program step can also be made as an or statement) This is performed at its best trough the combination of two indexes on the coordinate table, one containing all columns, and one from the ID column. 4. Use the rowlD to open the correct row in the target table. The ID column has a cluster index, a primary key or a unique constraint. The rowlD must be a numeric/integer value. a) Look for the word in the synonym wordlist. i) If found return the ID ii) If not found eliminate the last character (element) and look for this word (information element) in the wordlist and the synonym word list (1) If match, find the first x matches and return it as a word suggestion list, to be selected by the user. (2) If no match, or less than x - start again on i. b) When the search algorithm cannot find all the words, 1 result set with 3 values is returned. i) The following is displayed for the information seeker: how many elements did you look for, how many elements did you find, how many elements was impossible to find and a table containing the original word and the suggestions. Partitioning of the coordinate table Depending on the relation between the hardware technical data and the size of the coordinate table, there might be a need for partitioning the coordinate table providing a database structure, which can be searched by the hardware in a fast and efficient way. There is therefore also provided a procedure for partitioning the coordinate table. This procedure can be executed whenever the coordinate table becomes too large for the processing system on which the data searches are run. The procedure is outlined below. 1. The administrator enters the preferred table size (PTS) for the coordinate table as a parameter in the administration module. 2. Start: a) Stepl i) Create coordinate index table containing fields; wordno from : wordno to : coordinate table no ii) Sort coordinate table on wordno iii) Create Coordinate table X iv) Select wordlD from the first word in the wordlist. The wordno to be referred to as - AWNO ( Active Word No ) v) Add to coordinate index table first record "wordno from" = AWNO vi) Move all coordinates where wordno = AWNO to coordinate table X GOTO Step2 b) Step2 i) Select next word in the wordlist ii) IF wordcount - AWNO + records in X <= than PTS (1 ) Move all coordinates for AWNO to coordinate table X GOTO Step2 i iii) Update last record in coordinate index table "wordno to" = wordno in last record "word no" in coordinate table X iv) Calculate X = X+1 v) Create coordinate table X vi) Add to coordinate index table new record "wordno from" = AWNO vii) Move all coordinates where wordno = AWNO to coordinate table X GOTO Step2 i In the search procedure, an additional SQL statement can be made on the data extracted from the target table. This saves resources. When one word is repeated a lot of times in the target table, the cluster index is fast, but still it may require large hardware recourses, and if the database is very large with a lot of users this kind of search can be avoided using the cut procedure. The cut procedure is simple: If there is only one word in an entered search string, the search program returns the first 100 hits, sorted according to the rank selected by the administrator. Cut option on single word search, with additional SQL statement The cut option can be disabled or enabled according to what the administrator finds most useful to his solution. The procedure has the following steps: 1. Run the additional SQL first (taking resources from the target database) 2. Skip the cut option when additional SQL statement is > 0 (null) 3. Skip the cut option Rank procedure Based on the coordinate table position field or the wordlist word count field, four methods for ranking can be selected. These are: 1. First show the lowest record in the target database according to the position value. Building the index by selecting the most important column first, gives you a good ranking for certain types of data. This is useful when searching in categorized data, which will be explained later. 2. First show the records with the highest word count (occurrences for a word). 3. First show the records with the lowest word count (occurrences for a word). 4. Rank by a selected column from the target database, stated in the search syntax. Alternative embodiments Other embodiments of the invention will now be described. Figure 5 shows an extract of a content database 10, with cells 11 arranged in horizontal rows and vertical columns. Each cell 11 in the database is identified by a (x, y) coordinate pair, the numbers in the top row being the x coordinates and the numbers in the leftmost column being the y coordinates. Accordingly, the cell 14 in figure 5 is identified by the (x, y) coordinate pair (18, 53). The data pieces representing the information is arranged in the content database in such a way that data pieces describing certain information appear in the same row. As an example, a record in a telephone directory usually consists of last name, first name, address and telephone number. This information will therefore occur in the same row. Also, each cell in the content database in this embodiment only contains one piece of data, i.e. a continuous sequence of letters, numbers etc. However, in this embodiment of the invention, if a person has first name "Hans Frode", the entire first name will appear in one cell. There is no limitation on the number of letters, numbers etc. in the continuous sequence, and cells need therefore not be divided. Data are also arranged in the rows in the content database according to relevance. When processing the information in a computer processor, extracting the data to be included in the content database, data considered very descriptive of the information, i.e. data precisely defining what this information (e.g. file/document/www page) is all about, are arranged in the cells in a row in such a way that these data are assigned the highest absolute values of x. This means that the descriptive data either occurs to the very left or the very right in the content database, dependent on how the x coordinates are assigned to the columns. All the cells in the database in figure 5 need not be filled with a piece of data. The number of pieces of data necessary for adequately representing a cer- tain information may vary. Rows and columns in the content database can easily be added and deleted in known ways for dynamically expanding and decreasing the database when desired. The content database may be expanded almost infinitely. The database can also include the information address, e.g. an URL address for a www page. The address data is stored in one predefined column in a variety of ways, as e.g. a numerical representation with a link to an address index/database or an html link to an URL address. The same piece of data (e.g. words or numbers) may occur in many different locations in the content database in figure 5. Thus, all the coordinates for all these unique pieces of data occurring in the content database are extracted and arranged in indexes. An index table exists for each unique piece of data occurring in the content database. An embodiment of such an index table 20 for a unique piece of data is shown in figure 6. The x, y coordinate pairs are listed in the same row 21 , with the x coordinate in column 22 and the y coordinate in column 23. The coordinate pairs in index table 20 in figure 6 are first sorted in descending order according to the absolute value of the x coordinate, and second in ascending order according to the coordinate values of the y coordinates. The coordinate pairs representing the locations in which the unique piece of data is most descriptive of the represented information are therefore at the very top in the index tables. The column 24 called ID only identifies the number of different locations for the piece of data in the content database. To be able to find the appropriate index table for a certain piece of information, all the unique pieces of data are arranged in a main index, together with infor- mation concerning which index table includes the coordinate values for this data in the content database. A number of such main indexes may be created dependent upon the size of the content database. Examples: From a content database with 200 000 rows and 10 columns one main index (wordlist) is generated. The size of the main index will depend upon the number of unique pieces of data (words) in the content database. A content database comprising information relating to technical features of car models will result in a rather small main index, as the same words often will be repeated describing the different car models. The indexes providing the coordinate values, will however be large. Accordingly, a content database relating to phone number information will result in a rather large main index, and it may then be favorable to create a number of main indexes. When several main indexes are created, higher level tables are created for identifying the appropriate main index tables. Reducing the size of the index table in this way will result in increased search speed and easy retrieval of data when later searching the structure. The way in which the information is preprocessed and structured, provides a system where searches may be considered as performed in advance. The actual searches ordered by users of the search system are then performed in the structured preperformed searches. This considerably minimizes the search process. An embodiment of a main index table 30 is shown in figure 7. Note that only an extract of such a main index is shown in figure 7. The column 31 named ID gives the number of rows in the main index and hence the number of different pieces of data, e.g. words, existing in the content database. Column 33, criteria, lists the different pieces of data. In figure 7, the pieces of data are words sorted alphabetically. The main index may be regarded as some sort of word list for the database system. The corresponding index identifier for each piece of data is listed in column 34. Searching the database structure The information desired is inputted to the search system through an interface. This interface is e.g. a search engine residing on a personal computer for searching the Internet, a search module for searching files stored on servers in an intranet structure, a mobile phone for searching information regarding telephone numbers stored in the memory etc. If the desired information is input in the form of a keyword search string, which would be the typical case for an Internet application, the search system will first perform a search in the main index table finding the pieces of data matching the input keyword. Then, the index table identifier assigned to that piece of data will be selected. If no match between the input key- words and the pieces of data in the main index occurs, no hits are listed in the hit list. The index table identifier provides a link to the index table to be searched for finding the locations of the piece of data, and thereby the input keyword, in the content database. All the coordinate pairs for the selected piece of data are retrie- ved from the index table. The coordinate pairs are the locations of all the cells in the content database containing the input keyword. The entire rows in the content database containing the identified cells are then selected. In some implementations of the invention, the content database itself holds all the information desired by the user, typically when the database structure holds information concerning phone numbers and addresses. The rows may also contain information concerning the location of the desired information, e.g. an URL address for a page on the web. In the last mentioned case, having the coordinates for the cells in the content database, instantly implies having the URL addresses for the information sought by a person searching the web. Finding a cell location in the index table results in selecting the entire row in the content database containing the cell, as the y coordinate in the (x, y) coordinate pair identifies the row. The cell in the row holding the URL address information is then easily identified, as the column holding the address information is predefined. Known methods are used for searching the indexes and extracting the information. The size of the indexes are kept small, and well known search methods like binary search, can therefore be used. The favorable search speed is above all due to the simplicity of the system. Extracted data are stored in cells identified by coordinates and information concerning the unique data, and coordinate positions are stored in small index tables providing immediate localization of the input keywords in the content database. The system may be designed to go directly to an address and open the document. Another option is to display the pieces of data stored in the content database for the information seeker and leave the decision of opening the found information to the user. A search may result in a huge number of hits. The search system displays the information found according to its relevance for the input keywords. Relevance is an inherent characteristic of the system as the database structure and indexes are created taking account of the relevance as previously explained. Example 1 Typically, a telephone directory contains name, address and phone number information, but also profession and other additional information. Yellow pages may contain a lot of additional information, e.g. certificate of apprenticeship, work- force, work hours etc. All information concerning a subscriber is stored in one row in the content database. The information in the content database is then processed and coordinate information concerning each unique piece of data, is retrieved and stored in indexes set up for the purpose as explained above. At least one index is assigned each one of the unique pieces of data. The unique pieces of data are also retrieved and stored in a main index, a word list, together with links (index identifiers) to the appropriate index tables. A search is first performed in the main index, retrieving the index table identifier holding the coordinates for e.g. the desired person(s) or companies. The index table provides immediate access to the rows in the content database containing the desired information. This information is instantly displayed. As in present online versions of telephone books one may e.g. type in a phone number and achieve access to the subscriber data or use address information to find a telephone number. Example 2 An example of an implementation of another embodiment of the present invention will now be described in relation to a known hierarchical category system. Information contained in an information space can also be grouped into a hierarchical category system with subcategories or topics, like in Yahoo. The further down in the hierarchy information can be placed, the easier to retrieve the desired information at a later stage, as the information is then more defined. Each category and subcategory is described by a word representative of the information, and which a user of the system would utilize if searching for that particular information. The route to a specific topic in the hierarchy created is described by the words naming the categories. E.g. Science > Space > Exploration > Missions > Moon > Apollo Project > Individual Missions > Apollo 11. In this manner different search strings are created. All the search strings possible, as just explained above, are input into the content database (figure 5), one word in each cell, each row in the database representing a search string as explained above. A part of such a content database is shown in figures 9 and 10. Only the right part of the content database is shown in figure 9, whereas a left part of this particular content database is shown in figure 10. The search strings are also represented by a particular IMP number that appears in the rightmost column in figure 9. Each search string is read from the right to the left in figures 9 and 10. Each added word to the string represents a narrowing of the information sought, as known from the prior art. The search strings are sorted sequentially in alphabetic order. It must however be noted that the same words may appear in different columns, as the same topics may be grouped in different categories. Only a small number of words are shown, but the number can be increased indefinitely. Rows can easily be deleted from and added to the content database. This is an advantage as e.g. URL addresses that do not longer exist, can easily be deleted from the system and new addresses easily added. When performing a search, the user types in a number of words representing the topic the user is searching for, e.g. history moon landing. The combination of these three words represents a search string. It is assumed that a user starts by writing the area of which information is sought, and then narrows the search by each added word. The order in which the words are written into the search string is therefore essential. As can be seen from figure 10, all the cells of the database that have not been assigned a word are filled with <NULL>. The numbers shown in the upper row are x-coordinates and the number in the ID column are y-coordinates, meaning that each cell in the content table is represented by a (x,y) coordinate pair. The word landing has the position represented by the coordinate pairs x=19 and y=85, and x=19 and y=86 in the database shown in figure 10. As it is assumed that a user types in the search terms according to their relevance for the information sought, a search resulting in finding the last word in the input search string with the highest absolute value of x possible, is the information closest to the information desired by the user. In figure 10, a query including the word amphibious will have the search strings appearing in rows 85 and 86 as the most relevant result. Indexes of locations for each word appearing in the content database partly shown in figures 9 and 10 are created. An embodiment of such an index is shown in figure 11. In figure 11 the word landing's different coordinates in the content database are given. The x-coordinates are in the column named x, and the y- coordinates are in the column named y. The coordinate pairs (x, y) representing the cell in the content database in which the word landing appears, are positioned in the same row in the index in figure 1. From the index in figure 11 , one finds that the word "landing" appears in the cells in the content database with the coordinate pairs (-19, 85), (-19, 86), (-18, 90) and (-18, 91). The minus indicates that the x-axis proceeds from the right to the left in the content database in figure 9. Different indexes exist for the same word, taking into account that the same word may appear in different positions in the various search strings. The word landing may in one search string appear as the second word, and in another search string, from another user, the word landing may be input as the first word. A main index with all the words existing in the content database is therefore also created, an embodiment of which is shown in figure 12. In the column named "criteria" the words are inserted, one word in each cell. Each row, e.g. the highlighted row with id 112, contains information relating to the word "landing". The landing_1 in the firstref column denotes the index for the word "landing" when it appears as the first word in a search string. The index is shown in figure 13. Another index, landing_2, similar to the index shown in figure 13, exists for the word "landing" when it appears as the second word (secondref column) in a search string. The firstref index tables, like the one shown in figure 13, are sorted according to the absolute value of the x-coordinates, as shown. In figure 11 , the secondref index table is first sorted according to the absolute, value of the x coordinates and secondly according to the y-coordinates. A user of an electronic device on which a search in the information space above shall be performed, types in a string of words representing the desired information. E.g. the words: history landing. First, the word "history" is looked up in the main index. Since the word occurs first in the search string, the firstref column is used to find the index table identifier. The index holding the (x, y) coordinate pairs for the word "landing" is then used for finding the coordinates of the word "history" in the content database. The word "landing" appears as the second word in the search string. The secondref column in the main index is therefore used in identifying the index for enquiring the coordinates for the word landing" in the content database. Index landing_2 is selected. To have a hit, both the words "history" and "landing" must occur in the same search string in the content database, i.e. occur in the same row. When the coordinates for the first word "history" and the second word "landing" have been identified, the y coordinate values in the two selected indexes are compared. All coordinate pairs with the same y coordinate values are then selected. This group of hits is sorted according to the x coordinate values, finding the information considered most relevant for the user. The hit list may be displayed on a display device according to relevance, or the information in the list automatically opened and displayed for the user. If only the hit list is displayed, the user may choose the information to be opened. The hit list will display the pieces of data contained in all the chosen rows in the content database. This is believed to support the user in making the best choice possible. If none of the y coordinates for the words are identical, a calculation is performed for finding the information with the highest relevance. The information is almost instantly presented for the user, with the most relevant information displayed first, also showing the search string picked as a result of the input words. In the example above the search is only performed in categories. Accor- dingly, only the categories selected through the search procedure are displayed. This is called a category search. Only the information contained in the searched database is displayed. To be able to perform a meta search, the information contained in each category are also processed and structured as explained above. Assume a user types in the words "james brown". If these words cannot be found in the category database/index system, a search is performed in the database/index system for the records contained in each category. If such a record is found, the information represented by that particular record is immediately opened and presented to the user. This exemplifies another aspect of this special database/index structure. Data is retrieved and displayed according to the kind of information processed, structured and stored in the invented database/index system, whereas prior art systems perform searches and displays the search results according to the particular search engine used. In this embodiment of the present invention all the words describing the different categories and subcategories/topics are assigned a number. Each search string possible is therefore represented by this number, which in the present invention is called an IMP number. The IMP number comprises in the present invention three digits separated by an x or full stop (.). Examples of different IMP numbers are shown in the list in figure 8. In figure 8, each row of numbers, e.g xOO 1x012x002x001x005x002x003 in the first row, is an IMP number representing a particular search string consisting of 7 words. Each IMP number represents certain predefined information. The IMP numbers are shown in the column to the right in figure 9. Here, each three digit number is separated by a full stop (.), and each IMP number represents the search string seen on the same row to the left. The left side of the table is not shown in figure 9, meaning that search strings represented by IMP numbers with more than 3x3 digits are not shown in their entirety. The searches are only performed in structured systems of databases and indexes, like the categories in Yahoo, or in any library system. Searches are not performed directly in the information existing in the information space. The sear- ches are performed in advance when processing the information and creating the different indexes and content database. As the information contained in the information space may be regarded as represented by coordinates only, and in some embodiments also possibly by IMP numbers, any computation made by a proces- sor for comparing, calculating relevance etc. is facilitated. The use of tables and coordinates, provide a search principle easily adaptable between languages in known ways. Implementations of the system The program can process information already stored in a memory, hard disk or server, and run whenever new information is input or deleted from the information space, for adding this new information to the database/index structure or deleting rows in the database/indexes respectively. An intranet can be considered to be such an information space, and the program will then process and store all the information, documents, programs etc. existing on the different servers, work stations, printers etc. constituting the intranet, as extracted pieces of data representative of the information, or as file paths to documents or programs. The database system provides a rapid and efficient tool for finding the information existing in a network. The program can also be installed and run on personal computers as a fast and efficient file management system or on handheld electronic notebooks and mobile phones for storing and searching the information existing in these devices. The invented database structure, system and methods may e.g. be used in a search engine for searching the Internet, in a handheld electronic device comprising a processor and memory (e.g. a mobile phone, a WAP phone or a portable computer) or in a computer for retrieving files in a data storage device. Having described specific embodiments of the invention it will be apparent to those skilled in the art that other embodiments incorporating the concepts may be used. These and other examples of the invention illustrated above are intended by way of example only and the actual scope of the invention is to be determined from the following claims.

Claims: C L A I M S 1. System for structuring digitally stored information, the system being included in a data processing system, the system comprising: - a database comprising a number of cells arranged in rows and columns holding pieces of data representing the information, the pieces of data contained in cells in one row of the database constituting a certain information; - at least one index table comprising information concerning all locations of each unique piece of data in the database; -a main index listing once all the unique pieces of data in the database together with corresponding index identifiers, the index identifiers providing links to the corresponding index for said pieces of data. 2. System according to claim 1 , wherein the main index comprising information of the number of occurrences for each unique piece of data in the database. 3. System according to claim 1 , comprising an additional index linked to the main index comprising synonym information for the unique pieces of data occurring in the main index. 4. System according to claim 1 , wherein the locations are expressed by coordinates defining the cells in the database and the position. 5. System according to claim 4, wherein the coordinates are (x, y) coordinate pairs representing respectively the columns and rows in the database, 6. System according to claim 5, wherein the coordinate pairs in the index tables are first sorted according to the absolute value of the x coordinates and second according to the value of the y coordinate. 7. System according to claim 5, wherein the pieces of data with the highest absolute values of x having higher relevance than pieces of data with lower absolute values of x. 8. System according to claim 1 , wherein each row in the database comprising an address/link to the digitally stored information represented by the pieces of data contained in each row. 9. System according to claim 1 , wherein the pieces of data contained in cells in one row in the database represents a search string associated with an URL address. 10. System according to claim 1 , wherein the pieces of data contained in cells in one row in the database are associated with a file path. 11. System according to claim 1 , wherein the digitally stored information represents a telephone directory. 12. Method in a data processing system for structuring digitally stored information, the method comprising: - processing the information in a data processing unit and storing pieces of data representative of the information in cells in a database, the cells in the database being arranged in rows and columns, all the cells in the same row in the database constituting a certain information; - creating at least one index comprising information of all locations of all unique pieces of data in the database; and - creating a main index listing once all the unique pieces of data occurring in the database together with a corresponding index identifier providing a link to the corresponding index for a unique piece of data. 13. Method according to claim 12, comprising creating an additional index linked to the main index comprising synonym information for the unique pieces of data occurring in the main index. 14. Method according to claim 12, wherein the processing step comprising indexing the stored information by using an indexing agent. 15. Method according to claim 12, comprising expressing the locations by coordinate values defining the cells in the database. 16. Method according to claim 12, wherein the coordinate values are (x, y) coordinate pairs representing respectively the columns and rows in the database. 17. Method according to claim 16, comprising first sorting the coordinate pairs in the index according to the absolute values of the x coordinates and second according the y coordinate values. 18. Method according to claim 16, comprising processing the information and arranging the pieces of data representative of the information in the database in such a way that pieces of data assigned high absolute values of the x coordinates are more descriptive for the represented information than pieces of data assigned lower absolute values of the x coordinates. 19. Method according to claim 12, wherein the pieces of data are keywords describing the digitally stored information. 20. Method according to claim 19, wherein the keywords contained in cells in each row in the database constitute a search string, the method comprising creating an index for each position a unique keyword occurs in the search strings, and creating a corresponding index identifier associated with the keyword in the main index. 21. Method according to claim 12, wherein a resource locator for the processed information is included in each row in the database, the resource locator providing a link to the digitally stored information. 22. Method in a data processing system for searching digitally stored information, the information being structured in a system according to claim 1 , the method comprising: - inputting a desired information through an interface; - searching the main index selecting pieces of data corresponding to the desired information and thereby selecting index tables; - searching the selected index tables selecting at least one location of a cell in the database containing the desired information; and - selecting the row in the database in which the cell is located and retrieving the desired information. 23. Method according to claim 22, wherein the desired information being expressed in the form of a sequenced keyword search string, the method com- prising - determining the order of the keyword in the sequence of keywords, and selecting index tables corresponding both to the desired information and the order of the keyword in the input search string. 24. Method according to claim 22, comprising inputting the desired information through a search engine interface. 25. Method according to claim 22, comprising displaying the retrieved information in a display device. 26. Method in a data processing system for structuring digitally stored information, the information being contained in a database structure, the method comprising: - processing the information in a data processing unit and - creating at least one index comprising information of all locations of all unique pieces of data in the database; and - creating a main index listing once all the unique pieces of data occurring in the database together with a corresponding index identifier providing a link to the corresponding index for a unique piece of data. 27. Method in a data processing system for searching digitally stored information, the information being structured in a system according to claim 1 , the method comprising: - inputting a desired information through an interface; - searching the main index selecting pieces of data corresponding to the desired information and thereby selecting records corresponding to the desired information in at least one index table; - selecting position information for the desired information from the selected records in the at least one index table; and - based on the position information, selecting records in the database and retrieving the desired information. 28. Computer program product for a data processing system, comprising a computer readable medium, having thereon: computer readable program means, which when loaded into an internal memory of a data processing system, makes the data processing system perform the method in one of claims 12-21 , 22-25, 26 or 27. 29. Computer program product for a data processing system, comprising computer readable code means which, when loaded into an internal memory of a data processing system, makes the data processing system perform the method in one of claims 12-21 , 22-25 or 26. 30. Computer program according to claim 12 or 26, embodied on a record medium. 31. Computer program according to claim 12 or 26, stored in a computer memory. 32. Computer program according to claim 12 or 26, embodied in a read-only memory. 33. Computer program according to claim 12 or 26, carried on a signal carrier. 34. Use of the system according to one of claims 1-11 and the methods according to one of claims 12-21 , 22-25, 26 or 27 in a search engine for searching the Internet. 35. Use of the system according to one of claims 1-11 and the methods according to one of claims 12-21 , 22-25, 26 or 27 in a handheld electronic device comprising a processor and memory. 36. Use according to claim 35, wherein the electronic device is a mobile phone, a WAP phone or a portable computer. 37. Use of the system according to claim 1 and the methods according to claims 12 or 22 |n a computer for retrieving files in a data storage device.

Inventors: GULLIKSEN KENNETH, GULLIKSEN, KENNETH
Applicants: GULLIKSEN KENNETH, TWOCLICKAWAY, GULLIKSEN, KENNETH
Application year: 2001
Main classification: G06F17
IPC codes: G06F17