EP1733324A1 - Procede de recherche d'informations, moteur de recherche et microprocesseur pour la mise en oeuvre de ce procede - Google Patents

Procede de recherche d'informations, moteur de recherche et microprocesseur pour la mise en oeuvre de ce procede

Info

Publication number
EP1733324A1
EP1733324A1 EP05742860A EP05742860A EP1733324A1 EP 1733324 A1 EP1733324 A1 EP 1733324A1 EP 05742860 A EP05742860 A EP 05742860A EP 05742860 A EP05742860 A EP 05742860A EP 1733324 A1 EP1733324 A1 EP 1733324A1
Authority
EP
European Patent Office
Prior art keywords
information
document
character string
documents
stored
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
EP05742860A
Other languages
German (de)
English (en)
Inventor
Alain Nicolas Piaton
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from FR0402939A external-priority patent/FR2868178B1/fr
Priority claimed from FR0409271A external-priority patent/FR2874719B1/fr
Application filed by Individual filed Critical Individual
Publication of EP1733324A1 publication Critical patent/EP1733324A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/338Presentation of query results

Definitions

  • the present invention relates to a method of searching for information in documents stored in an electronic memory.
  • the invention also relates to a microprocessor for implementing this method and to a search engine. More precisely, the invention relates to a method for searching for information of the type comprising the following steps: - selection of at least one document from the stored documents, from a request comprising at least one predetermined character string, then - extraction of a result for display in the form of an overview of information relating to the selected document, and - prior to the selection and extraction steps, generation of a table representing the stored documents, comprising a chain of characters comprising at least part of the information of the stored documents.
  • a method is known.
  • the invention aims to remedy these drawbacks by providing a method of searching for information allowing a user to view quickly and effective content of documents selected in response to a request it has made.
  • the subject of the invention is therefore a method of searching for information of the aforementioned type, characterized in that, during the extraction step, the result is generated using the representation table, from information contained in the character string of the representation table deemed relevant according to the request.
  • the predetermined character string of the request is compared with the character string of the representation table, in particular by sequential scanning of the representation table, in order to select at least one document from the stored documents.
  • the representation table is also used as an indexing table for stored documents. It is therefore used both for viewing the content of the documents stored and for searching for these documents from a request comprising at least one predetermined character string. Sequential scanning of the character string contained in the representation table makes it possible to significantly increase the efficiency of the search.
  • At least one stored document being of the electronic mail type and comprising several distinct headings chosen from the set of elements consisting of an address of an issuer, an address of a recipient, an en -header, a message body, and at least one attachment
  • the character string of the representation table comprises at least part of the text type information of each item of the document of the electronic mail type.
  • the character string of the representation table also includes, for each stored document, identification information for this document.
  • viewing and searching for information can take account of this identifying information.
  • at least part of the result of the search for information is stored in memory.
  • the part of the result of the search for information stored in memory is stored in a file capable of comprising several results of several searches.
  • the information search method comprises the following steps: - extracting the information contained in the character string of the representation table deemed to be relevant as a function of the request, - transmission of this information to a remote terminal via a data transmission network, and the display of the result is carried out by the remote terminal.
  • a conversion can be carried out so that any displayable character of a text-type area of the stored documents is coded: - either on a byte; - either using a tag inserted in the representation table and followed by a one-byte code
  • the data set includes data for assistance in presenting the overview, used during the step of extracting the result.
  • the additional data are, for example, layout information making it possible to improve the visualization of the content of the selected documents, in particular to remain faithful to the layout of the content as it was presented in the document itself.
  • the data set can also include data to assist in the selection of at least one document. We can thus imagine additional data inserted using accent markers, synonymies, phonetic writing, etc. Thus, this selection aid data makes it possible to select documents comprising at least one character string close to the predetermined character string defined in the request.
  • An information search method may also include one or more of the following characteristics: - each tag inserted in the character string of the representation table comprises at least one escape character coded on a byte not belonging to the displayable characters appearing in the first 128 positions of the ASCII coding table, - one inserts into the character string of the representation table at least one information zone of numerical type coded on a predetermined number of bytes delimited by at least one tag indicating this digital area, - the tag indicating the digital area is also a tag indicating an agreement to present this digital area, - the stored documents being distributed in different types of documents, we define for each type of document a set of tags intended to be inserted in the bus chain acteres of the representation table, each tag in this set having a specific meaning for this type of document, - we insert into the character string of the representation table at least one set of data expressed in phonetic writing delimited by at least one phonetic writing indication beacon, - at least one indication tag is inserted into the character string of the representation table that a predetermined
  • an information search method may include the characteristic that: - each stored document comprising information distributed in several distinct predetermined headings common to all the stored documents, the result is displayed in the form of an overview comprising a preview zone for each common separate item and comprising a list of documents initially selected for the information it contains deemed relevant according to the search, - each preview zone can be deactivated, and - when deactivates at least one preview zone, each document initially selected is kept in the displayed list only for information deemed relevant that this document includes in at least one section corresponding to at least one preview zone which remains activated.
  • the information search process allows the user to make a quick choice from a set of selected documents provided in response to their request.
  • the invention also relates to a search engine for information in documents stored in an electronic memory, comprising: means for generating a table representing the stored documents, this table comprising a character string comprising at least part of the information of the stored documents, means for selecting at least one document from the stored documents, from a request comprising at least one predetermined character string, characterized in that it comprises means for extracting a result using the representation table, from information contained in the string characters from the representation table deemed relevant according to the query, with a view to displaying this result in the form of an overview of information relating to the selected document.
  • the invention also relates to a microprocessor comprising programmed instructions for the implementation of an information search method as defined above.
  • a microprocessor according to the invention may further comprise means for storing at least one dictionary table comprising a set of words in a predetermined language, each word being associated in this dictionary table with grammatical analysis data.
  • - Figure 1 schematically represents the successive steps implemented for generation a table for representing stored documents, in an information search method according to the invention
  • - Figure 2 schematically shows an example of a character string contained in the representation table of Figure 1
  • - Figures 3 and 4 show viewing windows of a selection of documents, displayed during the implementation of a particular embodiment of the invention
  • - Figure 5 schematically shows a device comprising a master microprocessor and several coprocessors for the rapid execution of a method according to the invention.
  • a method according to the invention uses the following elements: - a set of documents on which one is called upon to carry out searches, namely all types of documents comprising text such as documents from word processors, spreadsheets (noted Doc), or e-mails (noted Mail) with possibly their attachments (noted Att, Zip), these documents being stored either on a computer from which the searches are executed, or in networks internal companies, either outside and accessible via the Internet, - a set of tables, called index tables, to carry out searches, and - a set of tables representing the stored documents, called overview tables, to allow quick display of results.
  • index and overview tables are the same tables which are used both to perform the search and to display the overviews, that is to say, it is the index tables which are used as representation tables for stored documents to display overviews. Thereafter, these tables will be called index and overview tables (denoted TIA).
  • a search method according to the invention requires the following steps: - generation of an index and overview table (ie. A table representing the stored documents) comprising at least part of the information of the stored documents, - search of documents by selecting at least one document from the stored documents, from a request comprising at least one predetermined character string, - display of a result in the form of an overview of information relating to (x ) selected document (s).
  • the index and overview table should allow quick searching and quick viewing of previews. It contains for each document the following two types of information: - on the one hand, the full or partial content of the document in text format, uncompressed, that is to say any element which can be displayed under text form (in the case of e-mails the content of attached documents, whether in compressed form or not, is also stored in the index and overview table). - on the other hand, elements of identification of the document such as the name of the document, its object, a date, its length, keywords, a path to the document on the disc, etc.
  • each document such as Tia-doc is represented by a header (noted
  • Tia-ld followed by all the fields in text format (noted Tia-txt) that can be selected during a search for information.
  • a system of separators is used between the different documents, and between the different elements inside each document in order to allow rapid scanning of the index and overview table.
  • the Tia-ld header gathers numeric data, as well as texts on which there is no search: - an Oxff separator character or any other character which cannot appear in a text file, located at start of the header, - the length of the header, - digital data such as block lengths, various counters, - digital data likely to be searched, called subsequently headings, such the length or the date of the document, - alphabetical data which are not part of the search fields (machine name, customer, language, conversion tables, etc.).
  • Tia-txt a text part
  • these are the contents, keywords, elements of identification of the documents.
  • These different elements hereinafter called headings, are stored one after the other in the form of text, and they are separated by separator characters.
  • the content of each of the attachments of the electronic mails is stored in a separate index and overview table (denoted TIA-Att) called the index table of attachments and a given document appears there only once, even if it belongs to several emails or to several compressed Zip files themselves attached as an attachment.
  • the index and overview tables are generated and then regularly updated using converters (marked Conv) which, from the starting documents (word processing, spreadsheets, presentations, e-mails, etc.) extract all the useful elements for consulting these tables when searching for information, and subsequently for displaying the results in the form of an overview.
  • converters marked Conv
  • search software starts by scanning a file index table on the hard drive of the computer. , commonly known as FAT, or an equivalent table to check whether the file name, file type, length or date meet the search criteria. If this is the case, and in the case where the search must be carried out on words contained in the documents themselves, then the contents of each of the documents which correspond to these first search criteria are scanned sequentially, to check if the words you are looking for appear in this document.
  • FAT file index table on the hard drive of the computer.
  • one begins by scanning the index table of the TIA-Att attachments and, each time an attachment contains the word or words sought, an identifier is temporarily stored in a table of this attachment, which makes it possible, subsequently, during a scan of the TIA-Mail electronic mail table, to identify the letters that have attachments containing the searched words.
  • the information relating to the documents selected at the end of the search is displayed in the form of a table known as the table of documents found, comprising one or more rows for each document found and several columns each corresponding to one or more of said headings.
  • a row in the table is selected, for example an email
  • the Tia-txt content of this email is extracted from the TIA index and preview table and then displayed in a separate window called the preview window.
  • you move to the next line of the table it is the content of this new mail that is displayed in the overview window.
  • This container file like a mail folder, can be transmitted to another person either as a file via an internal company network, or as an attachment attached to an electronic mail.
  • the recipient will be able to see the content of this container file, displayed in the form of a table, in a similar way to the table of documents found, each line of the container file corresponding to one line of the table of documents found.
  • the container file can in turn be modified or enriched with other documents, then transmitted to other recipients.
  • When used as an attachment to an email it can, in turn, be crawled by the search engine, and the search results can be inserted into a new container file.
  • the information relating to the documents found at the end of the search is displayed in the form of a preview comprising a preview zone for each heading and comprising a list of documents initially selected for the information they contain deemed relevant according to of research. More precisely, they are displayed for example in the form of a table comprising one or more rows for each document selected and several columns each corresponding to one or more of said headings.
  • Figure 3 shows an example of a search result in e-mails in which the lines L1, L2, L3 and L4 contain a sequence of characters searched for "Paris".
  • each column includes both the title of the corresponding heading, as well as a check box or an equivalent device operating as follows: - if the box is checked, the column is activated and all the lines which contain the word or words sought in the section corresponding to this column, are displayed, - if not, the lines which contain the word or words sought are hidden which appear only in the section corresponding to the column.
  • the lines which contain the relevant information namely the sequence "Paris”
  • only the lines which contain the sequence sought in at least one of the activated columns are displayed, which is different from the device Classic tab consisting of displaying only the lines which contain a sequence sought in a given section.
  • the display in the preview window shows only the plain text of a selected document, exactly like the emails in plain format, that is to say without its layout elements, neither color nor words underlined or displayed in bold, while it may be desirable to display these previews with an improved presentation, close to or equivalent to the initial presentation of the selected document, Furthermore, this process is not entirely satisfactory when doing research on words with accents: indeed if we search for the word "improved", documents containing only "improves" will not be detected, In some cases, we would also like to find documents from a synonym, or d 'an equivalent concept, for example' finance 'instead of
  • a tag includes at least one escape character, preferably outside the displayable characters appearing in the first 128 positions of the ASCII coding table, such as 0x1 (hexadecimal notation), 0x2, 0x80, ... (this character contains both a notion of tag type and a notion of tag length).
  • escape character preferably outside the displayable characters appearing in the first 128 positions of the ASCII coding table, such as 0x1 (hexadecimal notation), 0x2, 0x80, ... ( this character contains both a notion of tag type and a notion of tag length).
  • it can also include one or more several characters, preferably different dm zero 0x0, which is traditionally reserved at the end of a character string.
  • tags are used, called respectively: - formatting tags, - advanced search tags, - process launch tags, - formatting or alert tags.
  • - formatting tags - advanced search tags
  • - process launch tags - formatting or alert tags.
  • tags are used to insert layout information. For example to display the word “horizontal” we will use the sequence: “ho-0x8-Griz-0x8-So-Ox8-gnt -0x8-sa -I”, in which: - the escape character “0x8” means " start or end tag "with a tag length of 2 characters (escape character included), - the next character” G “corresponds to” start of bold “,” g “to” end of bold “,” S »To“ start of underline ”,“ s ”to“ end of underline ”(the characters“ - ”have been added for easier understanding, but do not appear in the character string of the table representing stored documents).
  • Tags of this type can also be used to change the font, the font size, indent paragraphs, change the line spacing, indicate a page change, etc.
  • a set of tags using 2, 3 or more characters allows starting from an MS Word or Acrobat Reader PDF document, to create a sequence of characters which allows both: - a quick scan, like this is specified below, - the generation of a file in “rtf” format substantially equivalent to the starting document, which in most cases avoids keeping both the overview table and the starting MS Word file.
  • MS Word, Visual C ++, WinSdk, MSN, rtf are formats and trademarks registered by Microsoft Inc.
  • Acrobat Reader PDF is a trademark registered by Adobe Inc.
  • Advanced search tags Use of tags for accentuation. It is useful to be able to search on a word, taking accents into account. For example, if you search with the word "andré”, it is useful to be able to find documents that contain the word without an accent, for example an e-mail address such as “andre.dupont@xxx.com”, or well with a misspelling: "andrè”. This information can be coded as follows: “andr-é-0x7-e-0x7-è", the tag "0x7” signifying that the following character (“e” or "è”) is equivalent to the previous one (“ é ”). 2) Use of tags to repeat the same character n times.
  • tags we can solve the problem with tags as follows: first, in the search string, we replace the sequences of spaces, with a single space or better with the non-displayable character 0x1, and in the string with scan, we perform the following conversion: - for sequences of spaces less than 6 characters, we use tags using a single character, namely 0-x1, 0x2, 0x3, 0x4, 0x5 (without any other character after) which allows with a single character to solve this very common problem when a text is displayed with the justification on the right and on the left.
  • the representation table will be enriched with tags and words making it easier to perform the other content analysis operations, this enrichment being able to be carried out when an element of the table is created. representation, or when creating a "secondary table of representations”.
  • tags for metadata.
  • the tag 0x15 is of a similar nature and also makes it possible to associate a concept such as the action of financing. In this way during the initial creation, or subsequently during the creation of a "secondary table of representations", it is possible to add to a document a whole series of metadata to allow intelligent search on the content. 5) Use of tags for phonetic writing. If you want to interface the search with a voice recognition module, or to facilitate automatic analysis, it is useful to use phonetics.
  • beacon system which takes this into account: "0x3-1 -0-0-0-0-0-0x4-1 -.- 0-0-0 -, - 0-O-0x5-1 -, - O-0-0 -.- O-0-0x6 ".
  • the tag 0x3 indicates that the next field is an amount expressed in cents.
  • the tag 0x4 indicates that the next field is an amount displayed with European conventions.
  • the tag 0x5 indicates that the next field is an amount displayed with the American conventions.
  • the tag 0x6 indicates the end of the area relating to this amount.
  • each of the four characters following the tag can take any value, including the binary zero which usually signals the end of a character string.
  • This coding mode can be used for any type of digital information, signed or unsigned, on 16, 64, 128 bits, floating point, etc.
  • the comparison between two zones can consist in testing the equality between these two zones, but in a general way, one can carry out all the logical operations between two numerical zones (smaller, larger, or logical, or exclusive, etc. ).
  • the information will be stored: - either in rather text form, as explained above.
  • Tags can specify the display mode, whether it is a date expressed in local time, or better in universal time.
  • Process launch tags Use of tags to trigger an analysis process.
  • a correlation between the criteria provided by the user and the presence of certain words in the document can activate a process of content analysis.
  • tags can be entered on the fly, and duplicated in a memory area for further processing to analyze the content and allow a more relevant search. More generally, we can use tags to give specific meanings to certain fields, such as an account number, a quantity, an amount, a date, an article code, a pointer to an object, a notion of hierarchy, of parent, child, brother, that is to say all the notions that can be found in a table or a file in a computer containing a succession of records of different types.
  • each type of record that is to say each type of document stored in the computer, can be associated with a set of tags with specific meanings.
  • a complex operation for example to edit a bank account statement, involving several pieces of information such as the name and address of the bank account holder, the list of all movements for a period, we can be required to consult several different tables representing the stored documents, and the meaning of the tags may change during the different phases of this operation.
  • One way to solve the problem is to store, either at the level of the representation table itself, or at the level of each record of the representation table, information (or a code) making it possible to know the meaning of all the set of tags that should be used at some point.
  • a tag followed by a 32-bit numeric zone corresponding to a length L to indicate that the following L characters correspond to a zone without text, for example an image in such or such format, a sound, a sequence of image, a compressed or coded area in ".zip" format, a sequence of bytes, an MS Excel table, and in general a sequence of characters on which there is no search. You can also use tags to delimit different coding areas.
  • a representation table as described above can be used in several ways: - launch an identical search: we ignore all the fields designated by the tags: it is by example a default mode of use; - display a document in a preview window, or reconstruct the original document: for this, we will ignore all the tags, except those for formatting; - launch a more sophisticated search, with a capacity to interpret the document: we will use all the advanced search tags, including the process launch tags useful for implementing the most advanced known techniques in this field; - finally, in a completely different field, thanks to all of these techniques, use this table as a real database with fields of all kinds, numeric type zones, stored in decimal or hexadecimal form, pointers, areas to start processes, etc.
  • API from the English “Application Program Interface”.
  • An example of a non-exhaustive list of these APIs is given below, namely: - StrStrEx, by analogy with the function "strstr" which exists in most programming languages, and which consists in searching in a string of characters, the next occurrence of a given substring; - ExtractEdit, to extract from a string, the text to be edited with the only tags relating to the layout (the case where we want plain text without any tag is a special case of this); - ExtractData, to extract data from a string to a set of fields according to the formats usually used in IT (32-bit or 64-bit integer, floating point format, etc.); - MakeEditStr, reverse operation of ExtractEdit to convert a set of text documents (such as MS Word, rtf, etc., or emails in raw or html format) into a representation table with formatting tags, and possibly those allowing research based on content analysis; - MakeEditStr, reverse operation of ExtractEdit to convert a set of
  • LPCSTR StrStrEx (LPCSTR ptrStart, LPCSTR ptrSubChain, UINT uiParameter, STRSTREX * strExtended) in which: LPCSTR ptrStart is the starting point in the chain to explore, LPCSTR ptrSubChain the substring sought. UINT uiParameter the scan mode, STRSTREX * strExtended the address of a structure used to specify data, conversion formats or to communicate with other processes.
  • the scanning mode is a set of 32 bits or more which, combined, specify how the character string should be interpreted.
  • - STREX_SKIP_BAL -1 Ignore the case and all the tags
  • - STREX_WITH_CASE 1 Respect the case
  • - STREX_SKIP_EDIT 2 Ignore the tags relating to the layout
  • - STREX_SKIP_ANALYSIS 4 Ignore the tags for advanced search
  • - STREX_SKIP_PROCESS 8 Ignore process launches
  • - STREX_SKIP_FORMAT 16 Ignore formatting tags
  • - STREX_ FAST_DUPLIC 32 Duplicate certain words on the fly
  • - STREX_ ANALYSIS_1 64 Use advanced search tags type 1, - STREX_ ANALYS Use type 2 advanced search tags, - etc.
  • strExtended is the address of a structure allowing to specify data, conversion formats or to communicate with other processes, as does the BROWSEINFO structure used by the known API SHBrowseForFolder (cf. WinSdk of Visual C ++).
  • the command “0x17-password-1 -0x17” can launch an authentication program designated in a “Callback” type command.
  • the returned value is: - a pointer to the next occurrence found, - 0x0 if no string was found, or - a symbolic value in the event of an error.
  • the StrStrEx function must make the best use of the characteristics of modern microprocessors and the possibilities offered by electronic component technology.
  • ExtractEdit function Description of the ExtractEdit function and operating mode. int ExtractEdit (LPCSTR ptrStart, LPSTR * ptrEditChain, UINT uiParameter STRSTREX_ED * strEditlnfo) in which: LPCSTR ptrStart is the address of the chain to extract, LPSTR * ptrEditChain the address of a pointer to the chain to be edited, UINT uiParameter the editing mode (no layout, layout for display, layout to restore an MS Word document in rtf format, etc.), STRSTREX_ED * strEditlnfo the address of a structure to communicate more information on the conversion mode and format.
  • the ExtractEdit function uses a large part of the elements of StrStrEx.
  • ExtractData (LPCSTR ptrStart, void * ptrExtractedData, STRSTREX_EXTRACT * strExtractlnfo) in which: LPCSTR ptrStart is the address of the string to extract, LPSTR * ptrExtractedData the address of a pointer to the object to be created, STRSTREX_ EXTRACT * strExtractlnfo the address of a structure to communicate the format of the object to be manufactured, and all the processing necessary to carry out the conversion.
  • the ExtractData function uses a large part of the elements of StrStrEx.
  • MakeEditStr and makeDataStr are essentially conversion programs which do not pose any particular problem for a person skilled in the art.
  • LPCSTR StrStrExMultiple (LPCSTR ptrStart, LPCSTR * ptrSubChain, STRSTREX_MUL * strExtended) in which: LPCSTR ptrStart is the starting point in the chain to explore, LPCSTR * ptrSubChain a set of substrings searched for, STRSTREX_MUL * strExtended the address of a used to specify the parameters of this function. The returned value is: - a pointer to the next occurrence found, - 0x0 if no string was found, or - a symbolic value in the event of an error.
  • the StrStrExMultiple function is used to handle the case of a multiple document such as an email.
  • An email contains information about the sender, the recipients, the people copying it, the subject, the content of the email, as well as other information, and this email is stored in the overview table under the form of a header, followed by the various sender channels, recipients, people in copy, subject and content of the electronic mail, said header itself comprising a start tag, and said other information.
  • InitStrStrEx Description of the InitStrStrEx function and operating mode.
  • InitStrStrEx (STRSTREX_BALISES * strBalises, STRSTREX_PROCESS * strProcess, STRSTREX_CONV_CHAR * strConvChar, STRSTREX_MISC * strMisc) in which: STRSTREX_BALISES * strBalises is the address of a structure specifying the values of escapes, their category of escapements, on page ...) their action, links with processing, etc., STRSTREX_PROCESS * strProcess is the address of a structure specifying the information for resolving links with external or internal processing used by StrStrEx and other APIs described above, STRSTREX_CONV_CHAR * strConvChar is the address of a structure specifying the list of characters used, Unicode, Ascii, etc., the conversion tables between these codifications, the rules for passing from capital letters to lowercase, etc.
  • strMisc is the address of a structure specifying the other data such as version, languages, programming languages, system of 'exploitation (Windows, Unix, Linux ...), coding conventions (xml, rtf, MS Word, etc.), limits in processor speed, memory size, integer size, etc. This function is generally launched at the start of any program execution using the StrStrEx API and its derivatives.
  • this library can be integrated into other applications to build a search engine based on the scanning technique of a representation table as described above, which has the particularity of: - being able to integrate a preview window whose content is extracted from said table, and - thanks to the layout tags, in addition to offering a presentation equivalent to the starting documents in the majority of cases.
  • This library can also be integrated into other applications to build or analyze a container grouping together: - documents containing text such as MS Word or PDF coming from a user's local disk or local network, - e-mails with their attachments, i.e.
  • This space saving is very useful, both to save information on disk, to generate backups, to build archives for e-mails, to transport this information on local networks or via the Internet in the form of attachments. in emails. This avoids that many users of large companies are forced to delete their emails older than 6 or 12 months, which is a major annoyance for them.
  • This library can also be integrated into other applications to build the different elements of a messaging software to: - integrate a search engine with the characteristics described above, and - offer a new attachment system using a container described above.
  • This library can also be integrated into other applications to build databases containing essentially non-modifiable information as seen in the example below.
  • a bank has a million customers, and all e-mails including attachments, letters or documents specific to a customer represent on average twenty thousand characters (or about ten full pages). All of this data, with the tags for the layout, plus the identifiers (agency code, account number, dates, specific texts, references various letters, e-mail addresses, etc.) and the corresponding formatting tags, represents a maximum of 32 KB.
  • a customer counts on average about twenty movements per month, and it takes on average about a hundred characters to describe a movement accountant: agency code, transaction code, account number, dates, amount, associated text such as "transfer to Mr. So-and-so" or "check No 12345", printed number used to print the account statement.
  • the set of movements of a client during a year, with the corresponding tags represents a maximum of 32 KB.
  • the set of all this non-modifiable information, namely all text documents in the life of a client as well as all accounting movements for a year represents 64 GB, which could easily fit in the hard drive of a simple microcomputer.
  • StrStrEx and in particular the sequence of instructions which makes it possible to ignore the characters without interest as in the example below: if one searches for the substring "information”, it is necessary to traverse the chain as quickly as possible, while layout tags, until you find an uppercase or lowercase "i", and when you find one, quickly determine if the next useful character is an uppercase or lowercase "n".
  • microprocessor supporting FPGA technology (from the English "Field Programmable Gate Array”) and create the succession of logic gates corresponding to the part of the StrStrEx function which must be executed very quickly.
  • FPGA Field Programmable Gate Array
  • Another possibility is to use a microprocessor which is capable, in a few clock cycles, of executing a sequence of several tens, or hundreds, or thousands of instructions which are not stored in the memory of the machine, and loaded each time in the cache memory of the microprocessor, but engraved at least in part in the microprocessor itself, in the manner of specialized components such as graphics processors which allow the rapid display of a high definition image.
  • At least part of the API library can either be added to an existing microprocessor, which makes it possible to obtain a rapid scan with a simple microcomputer, for example to perform searches in e-mails, either be placed in a separate microprocessor, called the Co-Pi co-processor, which accesses the machine's memory, and executes its instructions under the control of another MainProc master microprocessor, as does the graphics processor of a microphone - computer (see Figure 5). It is also useful to place one or more dictionary tables in the microprocessor, in order to speed up the grammatical analysis of a document.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

Ce procédé de recherche d'informations dans des documents stockés dans une mémoire électronique comporte les étapes suivantes:- sélection d'au moins un document parmi les documents stockés, à partir d'une requête comportant au moins une chaîne de caractères prédéterminée, puis - extraction d'un résultat en vue de son affichage sous forme d'un aperçu d'informations relatives au document sélectionné, et - préalablement aux étapes de sélection et d'extraction, génération d'une table de représentation des documents stockés, comportant une chaîne de caractères comprenant au moins une partie des informations des documents stockés. Lors de l'étape d'extraction, on génère le résultat à l'aide de la table de représentation, à partir d'informations contenues dans la chaîne de caractères de la table de représentation jugées pertinentes en fonction de la requête.

Description

Procédé de recherche d'informations, moteur de recherche et microprocesseur pour la mise en œuvre de ce procédé
La présente invention concerne un procédé de recherche d'informations dans des documents stockés dans une mémoire électronique. L'invention concerne également un microprocesseur pour la mise en oeuvre de ce procédé et un moteur de recherche. Plus précisément l'invention concerne un procédé de recherche d'informations du type comportant les étapes suivantes : - sélection d'au moins un document parmi les documents stockés, à partir d'une requête comportant au moins une chaîne de caractères prédéterminée, puis - extraction d'un résultat en vue de son affichage sous forme d'un aperçu d'informations relatives au document sélectionné, et - préalablement aux étapes de sélection et d'extraction, génération d'une table de représentation des documents stockés, comportant une chaîne de caractères comprenant au moins une partie des informations des documents stockés. Un tel procédé est connu. En effet, devant la multiplication des documents sous forme de fichiers obtenus par traitement de texte ou de courriers électroniques disponibles dans les micro-ordinateurs et les réseaux internes des entreprises, la nécessité de disposer d'un procédé de recherche d'informations permettant de retrouver rapidement un document par un élément de son contenu s'impose de plus en plus. De nouveaux logiciels permettent d'ores et déjà de rechercher l'information sous forme de texte dans tout type de document, y compris dans les pièces jointes de courriers électroniques. Pour cela, préalablement à toute recherche d'informations, une table de représentation des documents stockés, généralement appelée index, permet de reprendre pour chacun des documents stockés, une liste de mot-clés représentatifs de ce document et à partir desquels le document peut être éventuellement sélectionné sur la base d'une requête. Toutefois, malgré cela, les temps de recherche sont encore importants, car lorsqu'un document a été sélectionné, il est souvent nécessaire d'ouvrir le document avec le programme de visualisation qui lui est associé pour s'assurer qu'il s'agit bien d'un document recherché. Plus grave encore, lorsque l'on a ouvert une dizaine de documents (traitement de texte, tableaux, courriers électroniques, etc.), il devient difficile de passer de l'un à l'autre. L'invention vise à remédier à ces inconvénients en fournissant un procédé de recherche d'informations permettant à un utilisateur de visualiser de façon rapide et efficace le contenu de documents sélectionnés en réponse à une requête qu'il a formulée. L'invention a donc pour objet un procédé de recherche d'informations du type précité, caractérisé en ce que, lors de l'étape d'extraction, on génère le résultat à l'aide de la table de représentation, à partir d'informations contenues dans la chaîne de caractères de la table de représentation jugées pertinentes en fonction de la requête. Ainsi, pour visualiser le contenu des documents sélectionnés, il n'est pas nécessaire d'ouvrir ces derniers, puisque le contenu pertinent est directement extrait d'une même table de représentation pour l'ensemble des documents. De préférence, lors de l'étape de sélection, on compare la chaîne de caractères prédéterminée de la requête à la chaîne de caractères de la table de représentation, notamment par balayage séquentiel de la table de représentation, pour sélectionner au moins un document parmi les documents stockés. Ainsi, la table de représentation est également utilisée en tant que table d'indexation des documents stockés. Elle est donc utilisée à la fois pour la visualisation du contenu des documents stockés et pour la recherche des ces documents à partir d'une requête comportant au moins une chaîne de caractères prédéterminée. Le balayage séquentiel de la chaîne de caractères contenue dans la table de représentation permet d'augmenter sensiblement l'efficacité de la recherche. De façon optionnelle, au moins un document stocké étant de type courrier électronique et comportant plusieurs rubriques distinctes choisies parmi l'ensemble d'éléments constitué d'une adresse d'un émetteur, d'une adresse d'un destinataire, d'un en-tête, d'un corps de message, et d'au moins une pièce jointe, la chaîne de caractères de la table de représentation comporte au moins une partie des informations de type texte de chaque rubrique du document de type courrier électronique. Ainsi, on peut effectuer une recherche dans un ensemble de courriers électroniques stockés en tenant compte non seulement du contenu de ces courriers électroniques mais également éventuellement du contenu de pièces jointes à ces courriers électroniques ou d'autres parties de ces courriers électroniques, telles que les en-tête. Dans ce cas, pour le document de type courrier électronique, on peut balayer séquentiellement les informations concernant la pièce jointe avant les informations concernant toute autre rubrique de ce document. En effet, il arrive fréquemment que les pièces jointes des courriers électroniques comportent les informations les plus pertinentes. De façon optionnelle, la chaîne de caractères de la table de représentation comporte en outre pour chaque document stocké des informations d'identification de ce document. Ainsi, la visualisation et la recherche d'informations peuvent tenir compte de ces informations d'identification. De façon optionnelle, on stocke en mémoire au moins une partie du résultat de la recherche d'informations. De façon optionnelle également, la partie du résultat de la recherche d'information stockée en mémoire est stockée dans un fichier apte à comporter plusieurs résultats de plusieurs recherches. Dans un mode de réalisation possible, lors de l'étape d'extraction du résultat, le procédé de recherche d'informations comporte les étapes suivantes : - extraction des informations contenues dans la chaîne de caractères de la table de représentation jugées pertinentes en fonction de la requête, - transmission de ces informations vers un terminal distant par l'intermédiaire d'un réseau de transmission de données, et l'affichage du résultat est réalisé par le terminal distant. Lors de l'étape de génération de la table de représentation des documents stockés, on peut effectuer une conversion pour que tout caractère affichable d'une zone de type texte des documents stockés soit codé : - soit sur un octet ; - soit à l'aide d'une balise insérée dans la table de représentation et suivie d'un code sur un octet Dans un mode de réalisation particulier de l'invention, lors de l'étape de génération de la table de représentation, on insère dans la chaîne de caractères de la table de représentation au moins un ensemble de données délimité par au moins une balise pour compléter les informations comprises dans cette chaîne de caractères. On peut ainsi imaginer insérer des données supplémentaires, à l'aide de balises prédéfinies pour améliorer la visualisation de documents sélectionnés ou pour augmenter la performance de la recherche d'informations. L'insertion de ces données supplémentaires à l'aide de balises directement dans la chaîne de caractères de la table de représentation permet de ne pas réduire les performances de la recherche d'informations. Ainsi, par exemple, l'ensemble de données comporte des données d'aide à la présentation de l'aperçu, utilisées lors de l'étape d'extraction du résultat. Les données supplémentaires sont par exemple des informations de mise en page permettant d'améliorer la visualisation du contenu des documents sélectionnés, notamment pour rester fidèle à la mise en page du contenu tel qu'il était présenté dans le document lui-même. L'ensemble de données peut également comporter des données d'aide à la sélection d'au moins un document. On peut ainsi imaginer des données supplémentaires insérées à l'aide de balises d'accentuations, de synonymies, d'écriture phonétique, etc. Ainsi, ces données d'aide à la sélection permettent de sélectionner des documents comportant au moins une chaîne de caractères voisine de la chaîne de caractères prédéterminée définie dans la requête. Un procédé de recherche d'informations selon l'invention peut en outre comporter l'une ou plusieurs des caractéristiques suivantes : - chaque balise insérée dans la chaîne de caractères de la table de représentation comporte au moins un caractère d'échappement codé sur un octet n'appartenant pas aux caractères affichables figurant dans les 128 premières positions de la table de codification ASCII, - on insère dans la chaîne de caractères de la table de représentation au moins une zone d'informations de type numérique codée sur un nombre prédéterminé d'octets délimité par au moins une balise d'indication de cette zone numérique, - la balise d'indication de la zone numérique est en outre une balise d'indication d'une convention de présentation de cette zone numérique, - les documents stockés étant répartis en différents types de documents, on définit pour chaque type de documents un ensemble de balises destinées à être insérées dans la chaîne de caractères de la table de représentation, chaque balise de cet ensemble ayant une signification spécifique à ce type de documents, - on insère dans la chaîne de caractères de la table de représentation au moins un ensemble de données exprimées en écriture phonétique délimité par au moins une balise d'indication d'écriture phonétique, - on insère dans la chaîne de caractères de la table de représentation au moins une balise d'indication qu'un nombre prédéterminé de caractères suivant cette balise dans la chaîne de caractères de la table de représentation n'a pas à être examiné lors de l'étape de sélection, - on insère dans la chaîne de caractères de la table de représentation au moins un ensemble de données correspondant à une analyse grammaticale d'une partie du contenu d'au moins un document stocké, délimité par au moins une balise d'indication d'analyse grammaticale, - on insère dans la chaîne de caractères de la table de représentation au moins un ensemble de données correspondant à des méta-données de description d'une partie du contenu d'au moins un document stocké, délimité par au moins une balise d'indication de méta-données, - on insère dans la chaîne de caractères de la table de représentation au moins une balise pour lancer un programme prédéterminé. En outre, un procédé de recherche d'informations selon l'invention peut comporter la caractéristique selon laquelle : - chaque document stocké comportant des informations réparties dans plusieurs rubriques distinctes prédéterminées communes à tous les documents stockés, le résultat est affiché sous la forme d'un aperçu comportant une zone d'aperçu pour chaque rubrique distincte commune et comportant une liste de documents initialement sélectionnés pour des informations qu'il contiennent jugées pertinentes en fonction de la recherche, - chaque zone d'aperçu est désactivable, et - lorsqu'on désactive au moins une zone d'aperçu, on maintient uniquement dans la liste affichée chaque document initialement sélectionné pour des informations jugées pertinentes que ce document comporte dans au moins une rubrique correspondant à au moins une zone d'aperçu qui reste activée. A l'aide de ces caractéristiques supplémentaires, le procédé de recherche d'informations permet à l'utilisateur d'effectuer un choix rapide dans un ensemble de documents sélectionnés fournis en réponse à sa requête. L'invention concerne également un moteur de recherche d'informations dans des documents stockés dans une mémoire électronique, comportant : - des moyens de génération d'une table de représentation des documents stockés, cette table comportant une chaîne de caractères comprenant au moins une partie des informations des documents stockés, - des moyens de sélection d'au moins un document parmi les documents stockés, à partir d'une requête comportant au moins une chaîne de caractères prédéterminée, caractérisé en ce qu'il comporte des moyens d'extraction d'un résultat à l'aide de la table de représentation, à partir d'informations contenues dans la chaîne de caractères de la table de représentation jugées pertinentes en fonction de la requête, en vue de l'affichage de ce résultat sous forme d'un aperçu d'informations relatives au document sélectionné. Enfin, l'invention concerne également un microprocesseur comportant des instructions programmées pour la mise en œuvre d'un procédé de recherche d'informations tel que défini précédemment. Un microprocesseur selon l'invention peut en outre comporter des moyens de stockage d'au moins une table dictionnaire comprenant un ensemble de mots dans une langue prédéterminée, chaque mot étant associé dans cette table dictionnaire à des données d'analyse grammaticale. L'invention sera mieux comprise à l'aide de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés dans lesquels : - la figure 1 représente schématiquement les étapes successives mises en oeuvre pour la génération d'une table de représentation de documents stockés, dans un procédé de recherche d'informations selon l'invention ; - la figure 2 représente schématiquement un exemple de chaîne de caractères contenue dans la table de représentation de la figure 1 ; - les figures 3 et 4 représentent des fenêtres de visualisation d'une sélection de documents, affichées lors de la mise en œuvre d'un mode de réalisation particulier de l'invention ; et - la figure 5 représente schématiquement un dispositif comportant un microprocesseur maître et plusieurs coprocesseurs pour l'exécution rapide d'un procédé selon l'invention. Comme cela est représenté sur la figure 1 , un procédé selon l'invention utilise les éléments suivants : - un ensemble de documents sur lesquels on est appelé à effectuer des recherches, à savoir tous types de documents comportant du texte tels que des documents issus de traitements de texte, tableurs (notés Doc), ou des courriers électroniques (notés Mail) avec éventuellement leurs pièces jointes (notées Att, Zip), ces documents étant stockés soit sur un ordinateur à partir duquel sont exécutées les recherches, soit dans des réseaux internes d'entreprises, soit en dehors et accessibles via Internet, - un ensemble de tables, dites tables d'index, pour effectuer les recherches, et - un ensemble de tables de représentation des documents stockés, dites tables des aperçus, pour permettre un affichage rapide des résultats. Dans un mode préféré de l'invention, ce sont les mêmes tables qui sont utilisées à la fois pour effectuer la recherche et afficher les aperçus, c'est-à-dire que ce sont les tables d'index qui sont utilisées en tant que tables de représentation des documents stockés pour afficher les aperçus. Par la suite ces tables seront appelées tables d'index et d'aperçu (notées TIA). Un procédé de recherche selon l'invention nécessite les étapes suivantes : - génération d'une table d'index et d'aperçu (ie. une table de représentation des documents stockés) comportant au moins une partie des informations des documents stockés, - recherche de documents par la sélection d'au moins un document parmi les documents stockés, à partir d'une requête comportant au moins une chaîne de caractères prédéterminée, - affichage d'un résultat sous forme d'un aperçu d'informations relatives au(x) document(s) sélectionné(s).
Génération de la table d'index et d'aperçu. La table d'index et d'aperçu doit permettre une recherche rapide et un affichage rapide des aperçus. Elle contient pour chaque document les deux types d'informations suivantes : - d'une part, le contenu intégral ou partiel du document en format texte, non compressé, c'est-à-dire tout élément qui peut être affiché sous forme de texte (dans le cas des courriers électroniques le contenu des documents attachés, qu'il soit sous forme compressée ou non, est également mémorisé dans la table d'index et d'aperçu). - d'autre part, des éléments d'identification du document tels que le nom du document, son objet, une date, sa longueur, des mots clefs, un chemin d'accès au document sur le disque, etc. (pour les courriers électroniques, le nom de l'émetteur sous forme d'adresse électronique et sous forme d'alias, le nom des destinataires, des copies, un nom de dossier, etc.). Tous les documents sont stockés les uns à la suite des autres soit dans une table d'index et d'aperçu unique, soit dans plusieurs tables d'index et d'aperçu, une par type de document par exemple (notées TIA-Doc TIA-Mail). Comme représenté sur la figure 2, chaque document tel que Tia-doc est représenté par un en-tête (noté
Tia-ld) suivi de tous les champs en format texte (noté Tia-txt) susceptibles d'être sélectionnés lors d'une recherche d'informations.
Dans un mode de réalisation préféré de l'invention, on utilise un système de séparateurs entre les différents documents, et entre les différents éléments à l'intérieur de chaque document afin de permettre un balayage rapide de la table d'index et d'aperçu. L'en-tête Tia-ld regroupe des données de type numérique, ainsi que des textes sur lesquels on n'effectue pas de recherche : - un caractère séparateur Oxff ou tout autre caractère qui ne peut pas figurer dans un fichier texte, situé au début de l'en-tête, - la longueur de l'en-tête, - des données numériques telles que des longueur de blocs, des compteurs divers, - des données numériques susceptibles d'être recherchées, appelées par la suite rubriques, telles que la longueur ou la date du document, - données alphabétiques qui ne font pas partie du champs des recherches (nom de machine, client, langue, tables de conversion, etc.). A la suite on trouve une partie texte (notée Tia-txt), comportant tous les éléments sur lesquels sont effectués les recherches en format texte. II s'agit des contenus, des mots-clefs, des éléments d'identification des documents. Ces différents éléments, appelés par la suite rubriques, sont stockés les uns à la suite des autres sous forme de texte, et ils sont séparés par des caractères séparateurs. Dans un mode de réalisation préféré de l'invention, le contenu de chacune des pièces jointes des courriers électroniques est mémorisé dans une table d'index et d'aperçu séparée (notée TIA-Att) dite table d'index des pièces jointes et un document donné n'y figure qu'une seule fois, même s'il appartient à plusieurs courriers électroniques ou à plusieurs fichiers compressés Zip eux-mêmes attachés en pièce jointe. Les tables d'index et d'aperçu sont générées puis régulièrement mises à jour grâce à des convertisseurs (notés Conv) qui, à partir des documents de départ (traitement de texte, tableurs, présentations, courriers électroniques ...) extraient tous les éléments utiles pour la consultation de ces tables au moment de la recherche d'information, puis par la suite pour l'affichage des résultats sous forme d'aperçu.
Recherche de documents. Hormis les logiciels de recherche documentaire ou moteurs de recherche sur Internet qui sont très rapides puisqu'ils utilisent un thésaurus, en général, les logiciels de recherche sur ordinateur commencent par balayer une table d'index des fichiers sur le disque dur de l'ordinateur, communément appelée FAT, ou une table équivalente qui permet de vérifier si le nom du fichier, le type du fichier, sa longueur ou sa date satisfont aux critères de recherche. Si c'est le cas, et dans le cas où l'on doit effectuer la recherche sur des mots contenus dans les documents eux-mêmes, on balaie alors séquentiellement le contenu de chacun des documents qui correspondent à ces premiers critères de recherche, pour vérifier si les mots recherchés figurent dans ce document. Il s'avère que cette technique, consistant à explorer d'abord une table d'index, puis si nécessaire, une seconde table contenant les textes eux-mêmes, est beaucoup plus lente que celle qui consiste à balayer séquentiellement une table d'index et d'aperçu qui contient tous les contenus des documents ainsi qu'il est décrit ci-après. Pour effectuer une recherche sur un ou plusieurs mots ou parties de mot, on balaie séquentiellement la table d'index et d'aperçu comme suit : - quand on rencontre un séparateur de document (égal à Oxff), on analyse les éléments de l'en-tête Tia-id du document qui suit puis on se positionne sur le premier caractère de la zone Tia-txt correspondant aux éléments sur lesquels on veut effectuer la recherche en format texte dans ce document, - ensuite, on balaie la zone Tia-txt pour vérifier si elle contient une partie ou la totalité des mots recherchés. Si ce n'est pas le cas, on passe au document suivant, sinon le décompte du nombre de séparateurs permet de savoir de quelle rubrique il s'agit, et grâce aux données de l'en-tête précédemment chargé, on dispose alors de tous les éléments nécessaires pour afficher le résultat de la recherche. Dans un mode de réalisation préféré de l'invention, on commence par balayer la table d'index des pièces jointes TIA-Att et, chaque fois qu'une pièce jointe comporte le ou les mots recherchés, on mémorise temporairement dans une table un identifiant de cette pièce jointe, ce qui permet, par la suite, lors d'un balayage de la table des courriers électroniques TIA-Mail d'identifier les courriers qui ont des pièces jointes contenant les mots recherchés. Dans le cas où l'on recherche des informations dans des documents, à partir d'une requête comportant deux chaînes de caractères prédéterminées, on peut procéder de deux manières différentes : - sans duplication de documents : au cours d'une première phase on lance la recherche par balayage sur la totalité de la table de représentation, et on mémorise les adresses des documents qui contiennent la première des deux chaînes de caractères prédéterminées, puis au cours d'une deuxième phase, on lance la recherche par balayage des seuls documents dont on a gardé l'adresse, pour sélectionner ceux qui contiennent la seconde chaîne de caractères prédéterminée ; ou - avec duplication de documents dans une nouvelle table secondaire dite « table secondaire de représentation » : au cours d'une première phase on lance la recherche par balayage sur la totalité de la table de représentation, et par duplication, on crée un nouvelle table secondaire de représentation à partir des documents qui contiennent la première des deux chaînes de caractères prédéterminées, puis au cours d'une deuxième phase, on lance la recherche par balayage sur la nouvelle table secondaire de représentation que l'on vient de créer de façon à sélectionner les documents qui contiennent aussi la seconde chaîne de caractères prédéterminée. Affichage d'un résultat. Les informations relatives aux documents sélectionnés à l'issue de la recherche sont affichées sous la forme d'un tableau dit tableau des documents trouvés, comportant une ou plusieurs lignes pour chaque document trouvé et plusieurs colonnes correspondant chacune à une ou plusieurs desdites rubriques. Quand une ligne du tableau est sélectionnée, par exemple un courrier électronique, le contenu Tia-txt de ce courrier est extrait de la table d'index et d'aperçu TIA puis affiché dans une fenêtre séparée dite fenêtre des aperçus. Quand on passe à la ligne suivante du tableau, c'est le contenu de ce nouveau courrier qui est affiché dans la fenêtre des aperçus. Quand un courrier électronique Mail contient une ou plusieurs pièces jointes Att, le nom des pièces jointes est affiché à l'écran, et quand on sélectionne l'une d'elle, son contenu Tia-Att est extrait de la table des pièces jointes TIA-Att puis affiché dans la fenêtre des aperçus, sans qu'il soit nécessaire d'exécuter un logiciel de présentation d'informations (traitement de texte, tableur, ...) qui lui est associé. Cette opération est extrêmement rapide puisque le contenu affiché fait partie de la table qui est explorée au cours de l'étape de recherche. Le fait de lancer au moins une recherche, puis de sélectionner les seuls documents utiles en vue de traiter un problème, représente une opération à la fois coûteuse en temps et en compétence, c'est-à-dire qu'une telle sélection apporte de la valeur ajoutée par rapport à l'information brute de départ. Avec les techniques actuelles de courrier électronique, si l'on désire transmettre cette information à une autre personne, tous les documents vont être transmis sous forme de pièces jointes à un courrier, et le destinataire sera amené à refaire une partie du travail de sélection qui a déjà été réalisée. C'est pourquoi il est préférable de lui transmettre un dossier appelé par la suite « fichier-conteneur » (noté File-Cont) qui contient non seulement les documents de départ (traitements de texte, tableurs, courriers électroniques, ...), mais également tous les éléments qui vont lui permettre de récupérer tout le travail de classement qui avait été ajouté par l'auteur de la recherche initiale. Pour cela, il suffit de disposer d'un fichier-conteneur vers lequel, on peut avec une fonction « copier-coller », copier une ou plusieurs lignes du tableau des documents trouvés. Grâce à cette opération, on mémorise dans une mémoire permanente, toutes les informations relatives à chaque ligne du tableau, à savoir, le contenu du document original avec sa mise en page, les dessins, images, sons, animations, etc, le texte Tia-txt nécessaire pour afficher l'aperçu, et toutes les informations que l'utilisateur de départ aura ajoutées à ces informations de départ pour en rendre la lecture plus rapide, et la présentation plus pertinente (par exemple les critères de recherche, les modes de tri par colonnes, ou bien la façon d'ordonner les lignes du tableau des documents trouvés, les statistiques sur la recherche ...). Ce fichier-conteneur, à l'instar d'une chemise de courrier, peut être transmis à une autre personne soit sous forme de fichier via un réseau interne d'entreprise, soit sous forme de pièce jointe attachée à un courrier électronique. Le destinataire pourra voir le contenu de ce fichier-conteneur, affiché sous forme de tableau, de manière analogue au tableau des documents trouvés, chaque ligne du fichier-conteneur correspondant à une ligne du tableau des documents trouvés. De la même manière, grâce à la fenêtre pour l'affichage de l'aperçu, il est possible aussi de voir rapidement le contenu des documents contenus dans le fichier-conteneur (courriers électroniques, traitement de texte, tableurs ...) sans avoir besoin d'ouvrir les documents avec les logiciels de présentation d'informations qui leur sont associés. Le fichier-conteneur peut à son tour être modifié ou enrichi avec d'autres documents, puis transmis à d'autres destinataires. Lorsqu'il est utilisé en tant que pièce jointe attachée à un courrier électronique, il peut, à son tour, être exploré par le moteur de recherche, et les résultats de la recherche peuvent être insérés dans un nouveau fichier-conteneur. Les informations relatives aux documents trouvés à l'issue de la recherche sont affichées sous la forme d'un aperçu comportant une zone d'aperçu pour chaque rubrique et comportant une liste de documents initialement sélectionnés pour des informations qu'ils contiennent jugées pertinentes en fonction de la recherche. Plus précisément, elles sont affichées par exemple sous la forme d'un tableau comportant une ou plusieurs lignes pour chaque document sélectionné et plusieurs colonnes correspondant chacune à une ou plusieurs desdites rubriques. La Figure 3 montre un exemple de résultat de recherche dans des courriers électroniques dans lequel les lignes L1 , L2, L3 et L4 contiennent une séquence de caractères recherchée « Paris ». Le titre de chaque colonne comporte à la fois l'intitulé de la rubrique correspondante, ainsi qu'une case à cocher ou un dispositif équivalent fonctionnant comme suit : - si la case est cochée, la colonne est activée et toutes les lignes qui comportent le ou les mots recherchés dans la rubrique correspondant à cette colonne, sont affichées, - dans le cas contraire, sont masquées les lignes qui contiennent le ou les mots recherchés qui figurent uniquement dans la rubrique correspondant à la colonne. Dans l'exemple de la figure 3, parmi les lignes qui contiennent les informations pertinentes, à savoir la séquence « Paris », on affiche seulement les lignes qui comportent la séquence recherchée dans au moins une des colonnes activées, ce qui est différent du dispositif classique d'onglet consistant à afficher seulement les lignes qui comportent une séquence recherchée dans une rubrique donnée. De la sorte, simplement en cochant ou décochant une colonne, il est possible de n'afficher qu'une partie des lignes correspondant au résultat de la recherche. Dans la figure 4, la colonne C3 est désactivée pour masquer tous les courriers pour lesquels « paris » était simplement en copie : la ligne L2 n'apparaît plus, par contre la ligne L3 est toujours affichée car « paris » apparaît dans la colonne C2 de la ligne L3. Néanmoins, le procédé décrit précédemment peut être encore amélioré pour répondre à plusieurs problèmes. L'affichage dans la fenêtre d'aperçu ne fait apparaître que le texte brut d'un document sélectionné, exactement comme les courriers électroniques en format brut, c'est-à-dire sans ses éléments de mise en page, ni couleur, ni mots soulignés ou affichés en gras, alors qu'il peut être souhaitable d'afficher ces aperçus avec une présentation améliorée, proche ou équivalente à la présentation initiale du document sélectionné, Par ailleurs, ce procédé ne donne pas toute satisfaction quand on fait des recherches sur des mots avec des accents : en effet si on cherche le mot «amélioré», les documents contenant seulement «améliore» ne seront pas détectés, Dans certains cas, on voudrait également, trouver des documents à partir d'un synonyme, ou d'une notion équivalente, par exemple «financer» au lieu de
« financement », Dans d'autres cas encore, quand il s'agit de montants, on voudrait pouvoir trouver un document qui contient «1.000» quand on recherche «1000», ou l'inverse, ceci quelle que soit la convention d'écriture 0"es anglo-saxons utilisent le point à la place de la virgule). De manière analogue, on voudrait faire facilement la différence entre le nombre 1000, et un nombre qui contient les mêmes chiffres comme 10001 , ou entre un nombre qui correspond à un montant ou un code article ou un numéro de compte. Dans d'autres cas enfin, on voudrait pouvoir reconstituer le document texte de départ à partir de la table de représentation des documents stockés, par exemple reconstituer un document généré en format «.rtf» ou un courrier électronique en format «.html», de façon à réduire la place occupée sur disque, ou pour ne travailler que sur une information unique au lieu d'une réplication ajoutée à une information originale, ce qui est beaucoup plus simple et sûr pour tous les traitements informatiques. D'une manière générale, il est utile d'avoir dans la table de représentation des documents stockés, sous une forme ou sous une autre : - tous les éléments pour reconstituer l'information de départ, - les éléments permettant de supporter les approximations dues à l'orthographe, aux accents, aux symboles monétaires, aux notions d'arrondis, et permettant d'utiliser des techniques connues d'analyse automatique de documents, - les éléments relatifs à la nature d'une information (montant, compteurs, numéro de compte, code d'article, notion de pointeur vers un élément parent ou enfant, etc.) pour pouvoir utiliser ce genre de table dans des applications sans rapport avec la recherche documentaire. Pour un certain nombre d'informations complémentaires, la meilleure solution consiste à ajouter toute une série de champs à coté du texte brut. Par contre, pour d'autres il est préférable d'utiliser un système de codification dans lequel les informations sont intimement liées au texte lui-même, grâce à un système de balises analogue à celui que l'on trouve dans des codages comme les formats « .html » ou « .rtf ». Par définition, une balise comporte au moins un caractère d'échappement, de préférence en dehors des caractères affichables figurant dans les 128 premières positions de la table de codification ASCII, tel que 0x1 (notation hexadécimale), 0x2, 0x80, ... (ce caractère contient à la fois une notion de type de balise et une notion de longueur de la balise). De façon optionnelle, elle peut comporter en outre un ou plusieurs caractères, de préférence différents dm zéro 0x0, qui est traditionnellement réservé à la fin d'une chaîne de caractères. Pour répondre aux différents types de problèmes précités, on utilise quatre types de balises appelées respectivement : - balises de mise en forme, - balises de recherche avancée, - balises de lancement de processus, - balises de formatage ou d'alerte. Pour simplifier la présentation, on a retenu ce découpage par catégorie, mais selon le type d'utilisation, on pourra faire appel à tel ou tel type de balise.
Balises de mise en forme. Ces balises sont utilisées pour insérer des informations de mise en page. Par exemple pour afficher le mot «horizontal» on utilisera la séquence : « h-o-0x8-G-r-i-z-0x8-S-o-Ox8-g-n-t -0x8-s-a -I », dans laquelle: - le caractère d'échappement « 0x8 » signifie « balise de début ou fin » avec une longueur de balise de 2 caractères (caractère d'échappement compris), - le caractère suivant « G » correspo nd à « début de gras », « g » à « fin de gras », « S » à « début de souligné », « s » à « fin de souligné » (les caractères « - » ont été ajoutés pour faciliter la compréhension, mais ne figurent pas dans la chaîne de caractères de la table de représentation des documents stockés). Des balises de ce type peuvent aussi être utilisées pour changer la police de caractères, la taille de la police, indenter des paragraphes, changer l'interligne, indiquer un changement de page, etc. De la sorte, un ensemble de balises utilisant 2, 3 ou davantage de caractères, permet en partant d'un document MS Word ou Acrobat Reader Pdf, de créer une séquence de caractères qui permet à la fois : - un balayage rapide, comme cela est précisé ci-après, - la génération d'un fichier en format « rtf » sensiblement équivalent au document de départ, ce qui évite dans la majorité des cas de conserver à la fois la table des aperçus et le fichier MS Word de départ. On notera que MS Word, Visual C++, WinSdk, MSN, rtf sont des formats et marques déposées par Microsoft Inc. Acrobat Reader Pdf est une marque déposée par Adobe Inc.
Balises de recherche avancée. 1) Utilisation de balises pour l'accentuation. Il est utile de pouvoir effectuer une recherche sur un mot en tenant compte des accents. Par exemple, si on lance une recherche avec le mot « andré », il est utile de pouvoir retrouver les documents qui contiennent le mot sans accent, par exemple une adresse de courrier électronique telle que « andre.dupont@xxx.com », ou bien avec une faute d'orthographe : «andrè». On peut coder cette information de la manière suivante : « a-n-d-r-é-0x7-e-0x7-è », la balise « 0x7 » signifiant que le caractère qui suit (« e » ou « è ») est équivalent au précédent (« é »). 2) Utilisation de balises pour répéter n fois le même c ractère. Il peut être également utile de comparer 2 chaînes de caractères comportant des espaces, comme dans l'exemple suivant : « moteur de recherche » et « moteur de recherche » . On peut résoudre le problème avec des balises de la manière suivante : d'abord, dans la chaîne à rechercher, on remplace les séque nces d'espaces, par un seul espace ou mieux par le caractère non affichable 0x1 , et dans la chaîne à balayer, on effectue la conversion suivante : - pour les séquences d'espaces inférieures à 6 caractères, on utilise des balises utilisant un seul caractère, à savoir 0-x1 , 0x2, 0x3, 0x4, 0x5 (sans autre caractère à la suite) ce qui permet avec un seul caractère de résoudre ce problème très fréquent quand u n texte est affiché avec la justification à droite et à gauche. - Pour les séquences plus longues, on peut utiliser une convention classique telle que : 0x6 - longueur de la séquence - caractère répété. 3) Utilisation de balises pour accélérer l'analyse de contenu. Quand on veut analyser un texte, il faut commencer par faire un certain nombre d'opérations du type analyse grammaticale, et mémo riser le résultat de cette analyse avec des balises, afin d'obtenir des verbes à l'infinitif, des noms au singulier, des articles, des conjonctions, etc. Par exemple : « le printemps est chaud et sec» peut être codé : «0x1 -l-e» 0x1 = article «0x2-p-r-i-n-t-e-m-p-s» 0x2 = nom commun singul ier «0x4-P-3-ê-t-r-e» 0x4-P-3 = verbe Présent 3ème personne «0x7-c-h-a-u-d» 0x7 = adjectif singulier «0x8-e-t» 0x8 = conjonction Dans la mesure où le programme de balayage d'une table peut être rendu extrêmement rapide comme on le verra plus loin, on peut utiliser une table dite « table dictionnaire », ou un ensemble de tables contenant tous les mots possibles dans un langue donnée pour vérifier que chaque mot d'un docu ment existe, et effectuer son analyse grammaticale. Une telle table dictionnaire comporterait une séquence de bl ocs comportant un ou deux éléments selon la complexité du mot à analyser. Par exemple : «0x1 -l-e» 0x1 = article «0x2-p-r-i-n-t-e-m-p-s» 0x2 = nom commun singulier «c-h-e-v-a-u-x-0x3-c-h-e-v-a I» 0x3 = nom commun p luriel «e-s-t-0x4-P-3-ê-t-r-e» 0x4-P-3 = verbe Présent 3ème pers. «0x7-c-h-a-u-d» 0x7 = adjectif singulier Pour les verbes réguliers on peut avoir : - soit toutes les formes possibles de conjugaisons, comme «i-n-v-e-n-t-e-r-a-s-0x4-F-2-i-n-v-e-n-t-e-r», futur à la 2errιe personne, - soit une forme plus compacte associée à une règle de conjugaison, comme «i-n-v-e-n-t-0x5-R-1-i-n-v-e-n-t-e-r», verbe régulier du pre mier groupe. De la sorte, la table de représentation sera enrichie avec des balises et des mots permettant d'effectuer plus facilement les autres opérations d'analyse de contenu, cet enrichissement pouvant s'effectuer au moment de la création d'un élément de la table de représentation, ou bien au moment de la création d'une « table secondaire des représentations ». Par ailleurs, quand on veut analyser le contenu d'un document de type texte, l'ordre des mots est important, comme dans l'exemple « location de voiture » ou « voiture de location ». Ceci nécessite parfois de balayer le texte plusieurs fois. Plutôt que de relancer le balayage à partir d'une adresse que l'on aura préalablement stockée, une autre solution, comme on l'a vu plus haut, consiste à créer une table secondaire de représentation et à dupliquer le document. Pour faciliter l'analyse, il peut être judicieux, au moment de la duplication, d'insérer des balises analogues à celles décrites ci-dessus pour faciliter l'analyse du contenu. On peut également imaginer un système où l'on génère tout un ensemble de tables secondaires de représentation, soit pour un document, soit pour un ensemble de documents qui contiennent une chaîne de caractères prédéterminée ou des balises d'un type donné.
4) Utilisation de balises pour des méta-données. Les moteurs de recherche sur Internet en général procèdent de la manière suivante. Quand un nouveau document doit être ajouté à une base de données, on commence par analyser son contenu en utilisant différentes techniques, dont une consiste à effectuer l'analyse grammaticale, comme décrit ci-dessus ; ensuite le résultat de cette analyse consiste à créer une liste de mots-clefs ou méta-données attachées à ce document. Ce sont ces méta-données qui sont placées dans ce que l'on appelle communément une liste inverse, et qui sont recherchées quand un utilisateur fournit plusieurs critères pour rechercher un document. Une méta-donnée de ce type peut-être codée au moyen d'un système de balise comme dans les exemples ci-dessous : «0x14-2-3-é-t-a-l-o-n». La balise 0x14 et les 2 caractères suivants (2-3) permettent de désigner le mot et de lui associer une notion telle que « 23 = animal ». «0x15-1 -3-r-e-f-i-n-a-n-c-e-m-e-n-t-0x15-f-i-n-a-n-c-e-r». La balise 0x15 est d'une nature voisine et permet en plus d'associer une notion telle que l'action de financer. De la sorte lors de la création initiale, ou bien par la suite lors de la création d'une « table secondaire des représentations » il est possible d'ajouter à un document toute une série de méta-données pour permettre une recherche intelligente sur le contenu. 5) Utilisation de balises pour l'écriture phonétique. Si on veut interfacer la recherche avec un module de reconnaissance vocale, ou pour faciliter l'analyse automatique, il est utile de recourir à la phonétique. Dans une langue donnée, il y a en général une équivalence entre les mots et la façon de les prononcer, mais ce n'est pas toujours le cas comme le mot « parent » selon qu'il s'agit du «père» ou du verbe «parer». De la même manière, au même sons peuvent être associées plusieurs orthographes particulièrement avec les noms propres comme « Durand » et « Durant ». Pour lever ce dilemme, après chaque mot qui pose un problème on peut placer une balise pour indiquer l'équivalent en écriture phonétique. 6) Utilisation de balises pour les montants. Selon la langue, 1000 unités monétaires s'écrit de manière différente : en français, «1.000,00», ou «1.000», en anglais «1 ,000.00», etc. Selon que l'utilisateur est français ou américain, il lancera sa recherche avec « 1.000,00 » ou « 1 ,000.00 » ou tout simplement « 1000 ». On peut utiliser un système de balises qui tient compte de cette particularité : « 0x3-1 -0-0-0-0-0-0x4-1 -.-0-0-0-,-0-O-0x5-1-,-O-0-0-.-O-0-0x6 ». La balise 0x3 indique que le champ suivant est un montant exprimé en centimes. La balise 0x4 indique que le champ suivant est un montant affiché avec les conventions européennes. La balise 0x5 indique que le champ suivant est un montant affiché avec les conventions américaines. La balise 0x6 indique la fin de la zone relative à ce montant. On peut aussi ajouter une balise pour indiquer quelle convention est utilisée dans le document de départ. Ce système de balises permet de restituer la formulation de départ dans le document, et de retrouver ce montant quel que soit l'utilisateur qui lance une recherche. 7) Utilisation de balises pour les dates et heures. On résout de façon analogue le problème des dates et des heures qui sont affichées de multiples manières selon la langue, le fuseau horaire, le fait d'afficher sans l'heure, etc. 8) Utilisation de balises pour les nombres. D'une manière analogue, on peut utiliser une balise telle que 0x1 C pour signifier que les quatre caractères suivants correspondent à un nombre entier codé en binaire sur 32 bits. Dans ce cas, la zone à comparer ne sera pas une chaîne de caractères, mais un nombre entier codé sur 32 bits. Il faut noter que dans ce cas précis, chacun des quatre caractères qui suivent la balise peut prendre une valeur quelconque, y compris le zéro binaire qui habituellement signale la fin d'une chaîne de caractères. Ce mode de codification peut être utilisé pour tout type d'information numérique, signée ou non, sur 16, 64, 128 bits, en virgule flottante, etc. La comparaison entre deux zones pourra consister à tester l'égalité entre ces deux zones, mais d'une manière générale, on pourra effectuer toutes les opérations logiques entre deux zones numériques (plus petit, plus grand, ou logique, ou exclusif, etc.). Il faut noter également que s'agissant de montants, selon les cas, on mémorisera l'information : - soit sous forme plutôt texte, comme expliqué plus haut. - soit sous forme plutôt numérique, c'est-à-dire : • une balise indiquant une monnaie (dollar, euro, ou autre), • une balise précisant la convention d'affichage (européenne ou anglo-saxonne), • une balise précédant un entier codé sur 32 bits, » enfin un nombre exprimant le montant en centimes. Il va de soi que pour les cas les plus fréquents, une seule balise peut remplacer les 3 balises décrites ci-dessus. Dans le cas où l'information est sous forme dite numérique, il faudra commencer par convertir la requête de l'utilisateur d'un format texte vers un format numérique, de façon à pouvoir effectuer la comparaison à grande vitesse, caractère par caractère. Un montant est une zone dite de type numérique, mais il y en a d'autres.
Ainsi, il en est de même pour les dates qui peuvent être mémorisées soit sous forme de texte, soit sous forme d'un nombre, selon les conventions couramment utilisées en informatique. Des balises peuvent préciser le mode d'affichage, le fait qu'il s'agisse d'une date exprimée en heure locale, ou mieux en temps universel.
Balises de lancement de processus. 1) Utilisation de balises pour déclencher un processus d'analyse. Dans un document, il y a des mots qui ont signification plus importante que d'autres si on veut effectuer une analyse de son contenu. On peut faire ressortir ces mots par un système de balises du type : « 0x16-2-3-f-a-i-l-l-i-t-e-0x16 », la balise 0x16 et les 2 caractères suivants (2-3) permettant à la fois de désigner le mot et de lui associer une notion telle que « 23 = juridique ». Une corrélation entre les critères fournis par l'utilisateur et la présence de certains mots dans le document peut activer un processus d'analyse du contenu. 2) Utilisation de balises pour lancer d'autres programmes. Par exemple si on veut protéger une information sensible, on peut utiliser une balise telle que : « 0x17-p-a-s-s-w-o-r-d-1-0x17 », la balise 0x17 encadrant l'appel à une authentification de type 1 , selon le résultat de laquelle le bloc d'informations en cours est ignoré ou analysé. D'une manière générale, il s'agit d'un moyen de lancer une séquence d'instructions qui sont exécutées dans le même programme, ou bien dans un autre programme résidant sur la même machine ou sur une machine distante, permettant un mode de travail soit coopératif, soit en parallèle, selon les techniques habituelles de programmation.
Balises de Formatage ou d'alerte. On peut considérer qu'une chaîne de caractères peut contenir à la fois un texte à afficher, des informations pour afficher celui-ci avec une présentation voisine de celle offerte par les outils de traitement de texte, des élément pour faciliter la recherche, des informations pour lancer des programmes. Certains mots repérés par des balises, peuvent être saisis à la volée, et dupliqués dans une zone de mémoire en vue d'un traitement ultérieur pour analyser le contenu et permettre une recherche plus pertinente. D'une manière plus générale, on pourra utiliser des balises pour donner des significations particulières à certains champs, tels qu'un numéro de compte, une quantité, un montant, une date, un code d'article, un pointeur vers un objet, une notion de hiérarchie, de parent, enfant, frère, c'est-à-dire toutes les notions que l'on peut trouver dans une table ou un fichier dans un ordinateur contenant une succession d'enregistrements de type différents. Par « enregistrement », on entend ici document stocké dans l'ordinateur. On peut utiliser tout un jeu de balises pour un enregistrement tel qu'une opération bancaire, puis utiliser des balises avec les mêmes valeurs exprimées en binaire, mais avec une signification complètement différente pour un enregistrement correspondant à un stock de marchandises. Ainsi, chaque type d'enregistrement, c'est-à-dire chaque type de document stocké dans l'ordinateur, peut être associé à un jeu de balises à significations spécifiques. Au cours d'une opération complexe, par exemple pour éditer un relevé de compte bancaire, faisant intervenir plusieurs informations telles que le nom et l'adresse du titulaire du compte bancaire, la liste de tous les mouvements d'une période, on peut être amené à consulter plusieurs tables différentes de représentation des documents stockés, et la signification des balises pourra changer au cours des différentes phases de cette opération. Une façon de résoudre le problème, est de mémoriser, soit au niveau de la table de représentation elle-même, soit au niveau de chaque enregistrement de la table de représentation, une information (ou un code) permettant de connaître la signification de tout le jeu de balises qui doit être utilisé à un moment donné. On peut aussi utiliser une balise suivie d'une zone numérique sur 32 bits correspondant à une longueur L pour indiquer que les L caractères suivants correspondent à une zone sans texte, par exemple une image dans tel ou tel format, un son, une séquence d'image, une zone compressée ou codée en format « .zip », une séquence d'octets, un tableau de type MS Excel, et de manière générale une séquence de caractères sur laquelle on n'effectue pas de recherche. On peut aussi utiliser des balises pour délimiter différentes zones de codage. Dans le monde occidental, et particulièrement chez les anglo-saxons, la quasi-totalité de l'information affichable est codée sur un octet. Par contre pour des langues telles que l'arabe ou le chinois, ou pour quelques caractères tels que l'Euro, on utilise la notation Unicode. En occident, on peut supposer que par défaut, le codage se fait sur un seul caractère, sauf entre une balise de début et une balise de fin de codage Unicode. Dans le même esprit, sur 8 bits, c'est-à-dire un octet, on peut coder les 160 caractères de l'alphabet latin (10 chiffres, 2x26 lettres, 2x6x4 voyelles accentuées et environ 50 caractères spéciaux) et avoir une centaine de balises. La codification Unicode peut-être être remplacée par une autre codification plus compacte et mieux adaptée à cette utilisation. S'il y a trop de combinaisons pour coder à la fois les caractères à afficher et les balises sur un seul caractère, c'est-à-dire plus de 256 possibilités pour un caractère sur 8 bits, on peut utiliser, pour les caractères les moins fréquents, par exemple les fractions, une balise indiquant que le caractère suivant appartient à un deuxième jeu de caractères ; il faut noter que ce système est différent du système Unicode, qui lui utilise systématiquement 2 caractères, ce qui permet 65.536 possibilités, alors que le présent système ne permet que 256 caractères possibles derrière une balise de ce type.
Une table de représentation telle que décrite précédemment, c'est-à-dire incluant des balises, peut être utilisée de plusieurs manières : - lancer une recherche à l'identique : on ignore tous les champs désignés par les balises : c'est par exemple un mode d'utilisation par défaut ; - afficher un document dans une fenêtre d'aperçu, ou bien reconstituer le document original : pour cela, on ignorera toutes les balises, sauf celles de mise en forme ; - lancer une recherche plus sophistiquée, avec une capacité d'interprétation du document : on utilisera toutes les balises de recherche avancée, y compris les balises de lancement de processus utiles pour mettre en œuvre les techniques connues les plus avancées dans ce domaine ; - enfin, dans un domaine complètement différent, grâce à l'ensemble de ces techniques, utiliser cette table comme une véritable base de données avec des champs de toutes natures, des zones de type numérique, stockées sous forme décimale ou hexadécimale, des pointeurs, des zones pour lancer des processus, etc.
Toutes ces possibilités peuvent être regroupées en un petit jeu d'instructions appelées couramment API (de l'anglais « Application Program Interface »). On trouvera ci-après un exemple d'une liste non limitative de ces API, à savoir : - StrStrEx, par analogie avec la fonction « strstr » qui existe dans la plupart des langages de programmation, et qui consiste à rechercher dans une chaîne de caractères, la prochaine occurrence d'une sous chaîne donnée ; - ExtractEdit, pour extraire d'une chaîne, le texte à éditer avec les seules balises relatives à la mise en page (le cas où on veut le texte brut sans aucune balise est un cas particulier de celui-ci) ; - ExtractData, pour extraire les données d'une chaîne vers un ensemble de champs selon les formats utilisés habituellement en informatique (entier sur 32 bits ou 64 bits, format en virgule flottante, etc.) ; - MakeEditStr, opération inverse de ExtractEdit pour convertir un ensemble de documents texte (tels que MS Word, rtf, etc., ou des courriers électroniques en format brut ou html) en une table de représentation avec des balises de mise en forme, et éventuellement celles permettant une recherche à partir de l'analyse du contenu ; - MakeDataStr, opération inverse de ExtractData pour convertir chaque enregistrement d'un fichier en élément d'une table de représentation avec des balises permettant l'accès rapide à un élément au moyen de critères ; - StrStrExMultiple, faisant appel plusieurs fois à la fonction élémentaire StrStrEx, et permettant de traiter plusieurs chaînes de caractères contenues dans un même document appelé document multiple afin d'y retrouver une ou plusieurs sous chaînes ; - InitStrStrEx, pour définir la liste de toutes les balises, avec : • leur valeur (caractère d'échappement + premier caractère + deuxième caractère, ...), » leur signification et leur mode de fonctionnement dans les différents types d'utilisation (recherche, extraction pour édition, extraction pour conversion, lancement de traitements, ...), et d'une manière générale tous les éléments paramétrables ou ceux nécessaires pour relier les balises à des programmes externes.
Description de la fonction StrStrEx et mode de fonctionnement. LPCSTR StrStrEx ( LPCSTR ptrStart, LPCSTR ptrSubChain, UINT uiParameter, STRSTREX *strExtended) dans laquelle : LPCSTR ptrStart est le point départ dans la chaîne à explorer, LPCSTR ptrSubChain la sous chaîne recherchée. UINT uiParameter le mode de balayage, STRSTREX *strExtended l'adresse d'une structure permettant de spécifier des données, des formats de conversion ou de communiquer avec d'autres processus. Le mode de balayage est un ensemble de 32 bits ou plus qui, combinés, précisent comment on doit interpréter la chaîne de caractères. Par exemple : - STREX_SKIP_BAL = -1 Ignorer la casse et toutes les balises, - STREX_WITH_CASE = 1 Respecter la casse, - STREX_SKIP_EDIT = 2 Ignorer les balises relatives à la mise en page, - STREX_SKIP_ANALYSIS = 4 Ignorer les balises de recherche avancée, - STREX_SKIP_PROCESS = 8 Ignorer les lancements de processus, - STREX_SKIP_FORMAT = 16 Ignorer les balises de formatage, - STREX_ FAST_DUPLIC = 32 Dupliquer certains mots à la volée, - STREX_ ANALYSIS_1 = 64 Utiliser les balises de recherche avancée type 1 , - STREX_ ANALYSIS_2 = 128 Utiliser les balises de recherche avancée type 2, - etc. STRSTREX *strExtended est l'adresse d'une structure permettant de spécifier des données, des formats de conversion ou de communiquer avec d'autres processus, comme le fait la structure BROWSEINFO utilisée par l'API connue SHBrowseForFolder (cf. le WinSdk de Visual C++). Par exemple, la commande « 0x17-p-a-s-s-w-o-r-d-1 -0x17 » peut lancer un programme d'authentification désigné dans une commande de type «Callback». La valeur retournée est : - un pointeur sur la prochaine occurrence trouvée, - 0x0 si aucune chaîne n'a été trouvée, ou - une valeur symbolique en cas d'erreur. Pour être performante, la fonction StrStrEx doit utiliser au mieux les caractéristiques des microprocesseurs modernes et les possibilités offertes par la technologie des composants électroniques. En particulier, il est exclus d'utiliser telles quelles certaines fonctions fournies dans les bibliothèques du langage de programmation C. On notera que l'objectif n'est pas d'avoir un code compact, mais d'exécuter le moins d'instructions possible pour les cas statistiquement les plus fréquents. On trouvera en annexe un exemple de code écrit en langage C pour une partie de la fonction StrStrEx.
Description de la fonction ExtractEdit et mode de fonctionnement. int ExtractEdit ( LPCSTR ptrStart, LPSTR *ptrEditChain, UINT uiParameter STRSTREX_ED *strEditlnfo) dans laquelle : LPCSTR ptrStart est l'adresse de la chaîne à extraire, LPSTR *ptrEditChain l'adresse d'un pointeur sur la chaîne à éditer, UINT uiParameter précise le mode d'édition (aucune mise en page, mise en page pour afficheur, mise en page pour restaurer un document MS Word en format rtf, etc.), STRSTREX_ED *strEditlnfo l'adresse d'une structure pour communiquer plus d'informations sur le mode de conversion et le format. La fonction ExtractEdit utilise une grande partie des éléments de StrStrEx.
Description de la fonction ExtractData et mode de fonctionnement. int ExtractData ( LPCSTR ptrStart, void *ptrExtractedData, STRSTREX_EXTRACT *strExtractlnfo) dans laquelle: LPCSTR ptrStart est l'adresse de la chaîne à extraire, LPSTR *ptrExtractedData l'adresse d'un pointeur sur l'objet à créer, STRSTREX_ EXTRACT *strExtractlnfo l'adresse d'une structure pour communiquer le format d'objet à fabriquer, et tous les traitements nécessaires pour effectuer la conversion. La fonction ExtractData utilise une grande partie des éléments de StrStrEx.
Les fonctions MakeEditStr, et makeDataStr sont essentiellement des programmes de conversion qui ne posent pas de problème particulier pour un homme de l'art.
Description de la fonction StrStrExMultiple et mode de fonctionnement. LPCSTR StrStrExMultiple ( LPCSTR ptrStart, LPCSTR *ptrSubChain, STRSTREX_MUL *strExtended) dans laquelle: LPCSTR ptrStart est le point de départ dans la chaîne à explorer, LPCSTR *ptrSubChain un ensemble de sous chaînes recherchées, STRSTREX_MUL *strExtended l'adresse d'une structure permettant de spécifier les paramètres de cette fonction. La valeur retournée est : - un pointeur sur la prochaine occurrence trouvée, - 0x0 si aucune chaîne n'a été trouvée, ou - une valeur symbolique en cas d'erreur. La fonction StrStrExMultiple permet de traiter le cas d'un document multiple tel qu'un courrier électronique. Un courrier électronique regroupe des informations sur l'émetteur, les destinataires, les personnes en copie, l'objet, le contenu du courrier électronique, ainsi que d'autres informations, et ce courrier électronique se trouve stocké dans la table des aperçus sous la forme d'un en-tête, suivi des différentes chaînes émetteur, destinataires, personnes en copie, objet et contenu du courrier électronique, ledit entête comportant lui-même une balise de début, et lesdites autres informations. En utilisant plusieurs fois la fonction élémentaire StrStrEx, il est possible de déterminer si une ou plusieurs chaînes du document multiple contiennent une sous chaîne recherchée, et dans quelle chaîne. Il est possible de déterminer également si le document multiple contient non pas une seule sous chaîne, mais plusieurs sous chaînes recherchées.
Description de la fonction InitStrStrEx et mode de fonctionnement. int InitStrStrEx ( STRSTREX_BALISES *strBalises, STRSTREX_PROCESS *strProcess, STRSTREX_CONV_CHAR *strConvChar, STRSTREX_MISC *strMisc) dans laquelle: STRSTREX_BALISES *strBalises est l'adresse d'une structure spécifiant les valeurs des échappements, de chacune des balises, leur longueur, catégorie (mise en page...) leur action, les liaisons avec les traitements, etc., STRSTREX_PROCESS *strProcess est l'adresse d'une structure spécifiant les informations pour effectuer la résolution des liens avec les traitements externes ou internes utilisés par les StrStrEx et les autres API décrites ci-dessus, STRSTREX_CONV_CHAR *strConvChar est l'adresse d'une structure spécifiant la liste des caractères utilisés, Unicode, Ascii, etc, les tables de conversions entre ces codifications, les règles de passage de majuscule à minuscule, etc., STRSTREX_MISC *strMisc est l'adresse d'une structure spécifiant les autres données telles que version, langues, langages de programmation, système d'exploitation (Windows, Unix, Linux...), les conventions de codage (xml, rtf, MS Word, etc), les limites en vitesse de processeur, taille mémoire, taille des entiers, etc. Cette fonction est en général lancée au début de toute exécution d'un programme utilisant l'API StrStrEx et ses dérivés.
Au moins une partie de ces fonctions peut être regroupée dans ce que l'on appelle une bibliothèque qui peut être intégrée dans d'autres applications. Par exemple, cette bibliothèque peut être intégrée dans d'autres applications pour construire un moteur de recherche basé sur la technique de balayage d'une table de représentation telle que décrite précédemment, qui a la particularité de : - pouvoir intégrer une fenêtre d'aperçu dont le contenu est extrait de ladite table, et - grâce aux balises de mise en page, offrir en plus une présentation équivalente aux documents de départ dans la majorité des cas. Cette bibliothèque peut également être intégrée dans d'autres applications pour construire ou analyser un conteneur regroupant à la fois : - des documents comportant du texte tels que MS Word ou Pdf provenant du disque local ou du réseau local d'un utilisateur, - des courriers électroniques avec leurs pièces jointes, c'est-à-dire des documents comportant du texte (MS Word, pdf, etc.) ou tout document tel que image, son, etc., et - les éléments suffisants pour avoir un aperçu des documents comportant du texte, sans avoir à ouvrir ces documents avec le programme associé, ce que l'on obtient en insérant un des éléments de ladite table de représentation des documents stockés. Grâce à une codification avec des balises de mise en page, il est possible de supprimer la plus grande partie des documents de type texte tels que MS Word ou Pdf puisque ladite table contient le plus souvent une information équivalente. Il faut savoir que les documents Pdf et surtout MS Word sont en général 10 fois plus volumineux qu'un document en format rtf équivalent et a fortiori qu'un fichier utilisant des balises très compactes comme celui qui est décrit ci-dessus. Un tel gain de place est fort utile, à la fois pour sauver l'information sur disque, pour générer des sauvegardes, pour constituer des archives pour les courriers électroniques, pour transporter ces informations sur les réseaux locaux ou via Internet sous forme de pièces jointes dans les courriers électroniques. Ceci permet d'éviter que beaucoup d'utilisateurs de grandes entreprises soient obligés de supprimer leurs courriers électroniques vieux de plus de 6 ou 12 mois, ce qui constitue une gêne importante pour eux. Cette bibliothèque peut également être intégrée dans d'autres applications pour construire les différents éléments d'un logiciel de messagerie pour : - intégrer un moteur de recherche avec les caractéristiques décrites ci- dessus, et - offrir un nouveau système de pièce jointes utilisant un conteneur décrit ci-dessus. Cette bibliothèque peut également être intégrée dans d'autres applications pour construire des bases de données contenant essentiellement des informations non modifiables comme on le voit dans l'exemple ci-dessous. Une banque comporte un million de clients, et l'ensemble des courriers électroniques y compris les pièces jointes, des courriers ou documents spécifiques d'un client représente en moyenne vingt mille caractères (soit environ dix pages pleines). L'ensemble de ces données, avec les balises pour la mise en page, plus les identifiants (code agence, numéro de compte, dates, textes spécifiques, références des divers courriers, adresses électroniques, etc.) et les balises de formatage correspondantes, représente au maximum 32 Ko. Un client com pte en moyenne une vingtaine de mouvements par mois, et il faut en moyenne environ une centaine de caractères pour décrire un mouvement comptable : code agence, code opération, numéro de compte, dates, montant, texte associé tel que « virement à Monsieur Untel » ou « chèque No 12345 », numéro d'imprimé utilisé pour imprimer le relevé de compte. L'ensemble des mouvements d'un client pendant une année, avec les balises correspondantes représente au maximum 32 Ko. L'ensemble de toutes ces informations non modifiables, à savoir tous les documents de type texte dans la vie d'un client ainsi que tous les mouvements comptables pendant un an représente 64 Go, qui pourraient facilement tenir dans le disque dur d'un simple micro-ordinateur. Quand il y a un nouveau document, ou un nouveau mouvement comptable, il suffit de le rajouter à la fin de la table de représentation des documents stockés, ce qui rend inutile l'utilisation de pointeurs ou de tables de correspondance en tout genre qui posent des problèmes de mise à jour, et surtout de reprise en cas d'incident, pour une simple question de cohérence entre les différentes informations. Si l'on veut afficher tous les mouvements comptables d'un client pendant les quinze derniers jours à partir d'un poste de travail dans une agence, on procédera comme suit : - à partir du poste de travail, on lance une requête vers une base de données distante pour rechercher toutes les opérations correspondant à un numéro de compte donné, entre deux dates prédéterminées. - en retour, tous les mouvements, avec les contenus et les balises, tels que décrits ci-dessus, sont renvoyés par le réseau interne de la banque, de la base de données vers le poste de travail, et peuvent être affichés à l'écran . Si l'on veut imprimer un relevé de compte grâce au numéro d'imprimé utilisé pour imprimer le relevé de compte, il sera possible d'imprimer un relevé ce compte identique à celui qui avait été envoyé au client. Comme on peut le constater la fonction ExtractData peut utilement être déportée dans une machine autre que celle qui contient la base de données. Un des principaux intérêts de ce procédé, c'est que c'est la même séquence de caractères qui figure dans la base de données, et qui est utilisée en fin de traitement pour imprimer le document, et cette chaîne de caractères est très compacte, ce qui a pour effet de réduire le trafic sur le réseau.
Pour obtenir des temps d'accès compatibles avec les applications évoqués ci- dessus, il y a plusieurs possibilités qui peuvent être mises en œuvre indépendamment les unes des autres, ou bien ensemble, le but étant toujours d'exécuter le plus rapidement possible la fonction StrStrEx, et en particulier la séquence d'instructions qui permet d'ignorer les caractères sans intérêt comme dans l'exemple ci-après : si on recherche la sous chaîne « information », il faut parcourir le plus rapidement possible la chaîne, en ignorant les balises de mise en page, jusqu'au moment où l'on rencontre un « i » majuscule ou minuscule, et quand on en a trouvé un, déterminer rapidement si le caractère utile suivant est un « n » majuscule ou minuscule. Parmi ces différentes possibilités, on peut citer : optimiser le code en langage assembleur, utiliser des microprocesseurs performants pour exécuter ce type de programme en raison de la taille de la mémoire cache ou de leur aptitude à exécuter plusieurs instructions en un seul cycle d'horloge, utiliser des processeurs travaillant sur 64 bits voire plus. Comme cela est représenté sur la figure 5, on peut utiliser plusieurs microprocesseurs Co-Pi ou ordinateurs en parallèle travaillant chacun sur une partie MEMi de la table de représentation des documents stockés. Par exemple, on peut adjoindre à un simple micro-ordinateur avec 4 Go de mémoire, une carte du type DSP32 équipée de 16 microprocesseurs travaillant chacun en parallèle sur 1/16ème de la table de représentation complète. On encore utiliser un microprocesseur supportant la technologie FPGA (de l'anglais « Field Programmable Gâte Array ») et créer la succession de portes logiques correspondant à la partie de la fonction StrStrEx qui doit être exécutée très rapidement. Une autre possibilité est d'utiliser un microprocesseur qui est capable, en quelques cycles d'horloge, d'exécuter une séquence de plusieurs dizaines, ou centaines, ou milliers d'instructions qui ne sont pas stockées dans la mémoire de la machine, et chargées à chaque fois dans la mémoire cache du microprocesseur, mais gravées au moins en partie dans le microprocesseur lui-même, à la manière des composants spécialisés comme les processeurs graphiques qui permettent l'affichage rapide d'une image haute définition. Selon les cas, au moins une partie de la bibliothèque des API peut, soit être ajoutées à un microprocesseur existant, ce qui permet d'obtenir un balayage rapide avec un simple micro-ordinateur, par exemple pour effectuer des recherches dans des courriers électroniques, soit être placées dans un microprocesseur séparé, appelé co-processeur Co-Pi, qui accède à la mémoire de la machine, et exécute ses instructions sous le contrôle d'un autre icroprocesseur maître MainProc, comme le fait le processeur graphique d'un micro-ordinateur (cf. figure 5). Utilement on peut également placer dans le microprocesseur une ou plusieurs tables dictionnaire, en vue d'accélérer l'analyse grammaticale d'un document.
AMNEXE
Exemple de code écrit en langage C pour une partie de la fonction StrStrEx
dans l'exemple suivant, on a supposé que l'on recherche la chaîne de caractères "lévrier"
- tous les caractères affichables sont compris entre 0x1 et BALISE_MINI -1 ; - toutes les balises sont comprises entre les valeurs BALISE_MINI et BALISE_MAXI, à savoir : • BALISE_MINI2 et BALISE_MAXI2 pour les balises à 2 caractères, • BALISE_MINI3 et BALISE_MAXI3 pour les balises à 3 caractères, • BALISE_SAME_CHAR est la balise pour substituer un caractère (pour trouver "lévrier" ou "lévrier"), • etc.
LPCSTR StrStrEx (LPCSTR ptrStart, LPCSTR ptrSubChain, UINT uiParameter, STRSTREX *strConvFormat) { strupr (ptrSubChain) ; BYTE ucFirstCharUpr = ptrSubChain [0] ; BYTE ucSecondCharUpr = ptrSubChain [1] ; strlwr (ptrSubChain) ; BYTE ucFirstCharLwr = ptrSubChain [0] ; BYTE ucSecondCharLwr = ptrSubChain [1] ; // boucle très courte pour traiter d'abord les cas statistiquement les plus fréquents, // l'objectif n'est pas d'avoir un code compact, mais rapide while ( TRUE) { if ( *ptr == 0) break ; if ( *ptr < BALISE_MINI && *ptr != ucFirstCharLwr && *ptr != ucFirstCharUpr) { ptr++ ; continue ; // --> caractère suivant } if ( *ptr == BALISE_SAME_C HAR) { ptr++ ; // avancer d'un caractère pour tester le caractère suivant if ( *ptr != ucFirstCharLwr && *ptr != ucFirstCharUpr) { ptr++ ; continue ; // — > caractère suivant } } else if (*ptr <= BALISE_MAXI2 ) { ptr+= 2 ; // avancer de 2 caractères pour tester le caractère suivant continue ; } else if (*ptr <= BALISE_MAXI3 ) { ptr+= 3 ; // avancer de 2 caractères pour tester le caractère suivant continue ; }
// — Ici, on a trouvé le premier caractère de la sous-chaîne ( T de "lévrier") if (ucSecondCharLwr != 0) // protection si la sous-chaine comporte plus d'un caractère { ptr++ ; if ( *ptr == 0) break ; if ( *ptr < BALISE_MINI && *ptr != ucSecondCharLwr && *ptr != ucSecondCharUpr) { ptr++ ; continue ; // --> caractère suivant }
else if ( *ptr == BALISE_SAME_CHAR) { ptr++ ; // avancer d'un caractère pour tester le caractère suivant if ( *ptr != ucSecondCharLwr && *ptr != ucSecondCharUpr) { ptr++ ; continue ; // --> caractère suivant } } else if (*ptr <= BALISE_MAXI2 ) { ptr+= 2 ; // avancer de 2 caractères pour tester le caractère suivant continue ; } else if (*ptr <= BALISE_MAXI3 ) { ptr+= 3 ; // avancer de 2 caractères pour tester le caractère suivant continue ; } } // — Ici, on a trouvé les premiers caractère de la sous-chaîne ( T de "lévrier") — // on peut effectuer la même opération pour Le 3ème caractère, ou bien effectuer une boucle.

Claims

REVENDICATIONS
1. Procédé de recherche d'informations dans des documents stockés dans une mémoire électronique, comportant les étapes suivantes : - sélection d'au moins un document parmi les documents stockés, à partir d'une requête comportant au moins une chaîne de caractères prédéterminée, puis - extraction d'un résultat en vue de son affichage sous forme d'un aperçu d'informations relatives au document sélectionné, - préalablement aux étapes de sélection et d'extraction, génération d'une table de représentation des documents stockés, comportant une chaîne de caractères comprenant au moins une partie des informations des documents stockés, caractérisé en ce que, lors de l'étape d'extraction, on génère le résultat à l'aide de la table de représentation, à partir d'informations contenues dans la chaîne de caractères de la table de représentation jugées pertinentes en fonction de la requête.
2. Procédé de recherche d'informations selon la revendication 1 , dans lequel, lors de l'étape de sélection, on compare la chaîne de caractères prédéterminée de la requête à la chaîne de caractères de la table de représentation, notamment par balayage séquentiel de la table de représentation, pour sélectionner au moins un document parmi les documents stockés.
3. Procédé de recherche d'informations selon la revendication 1 ou 2, dans lequel, au moins un document stocké étant de type courrier électronique et comportant plusieurs rubriques distinctes choisies parmi l'ensemble d'éléments constitué d'une adresse d'un émetteur, d'une adresse d'un destinataire, d'un en-tête, d'un corps de message, et d'au moins une pièce jointe, la chaîne de caractères de la table de représentation comporte au moins une partie des informations de type texte de chaque rubrique du document de type courrier électronique.
4. Procédé de recherche d'informations selon les revendications 2 et 3, dans lequel pour le document de type courrier électronique, on balaye séquentiellement les informations concernant la pièce jointe avant les informations concernant toute autre rubrique de ce document.
5. Procédé de recherche d'informations selon l'une quelconque des revendications 1 à 4, dans lequel la chaîne de caractère de la table de représentation comporte en outre pour chaque document stocké des informations d'identification de ce document.
6. Procédé de recherche d'informations selon l'une quelconque des revendications 1 à 5, dans lequel on stocke en mémoire au moins une partie du résultat de la recherche d'informations.
7. Procédé de recherche d'informations selon l'une quelconque des revendications 1 à 6, dans lequel la partie du résultat de la recherche d'informations stockée en mémoire est stockée dans un fichier apte à comporter plusieurs résultats de plusieurs recherches.
8. Procédé de recherche d'informations selon l'une quelconque des revendications 1 à 7, comportant, lors de l'étape d'extraction du résultat, les étapes suivantes : - extraction des informations contenues dans la chaîne de caractères de la table de représentation jugées pertinentes en fonction de la requête, - transmission de ces informations ve rs un terminal distant par l'intermédiaire d'un réseau de transmission de données, et dans lequel l'affichage du résultat est réalisé par le terminal distant.
9. Procédé de recherche d'informations selon l'une quelconque des revendications 1 à 8, dans lequel, lors de l'étape de génération de la table de représentation des documents stockés, on effectue une conversion pour que tout caractère affichable d'une zone de type texte des documents stockés soit codé : - soit sur un octet ; - soit à l'aide d'une balise insérée dans la table de représentation et suivie d'un code sur un octet.
10. Procédé de recherche d'informations selon l'une quelconque des revendications 1 à 9, dans lequel, lors de l'étape de génération de la table de représentation, on insère dans la chaîne de caractères de la table de représentation au moins un ensemble de données délimité par au moins une balise pour compléter les informations comprises dans cette chaîne de caractères.
11. Procédé de recherche d'informations selon la revendication 10, dans lequel chaque balise insérée dans la chaîne de caractères comporte au moins un caractère d'échappement codé sur un octet n'appartenant pas aux caractères affichables figurant dans les 128 premières positions de la table de codification ASCII.
12. Procédé de recherche d'informations selon la revendication 10 ou 11 , dans lequel l'ensemble de données comporte des données d'aide à la présentation de l'aperçu, utilisées lors de l'étape d'extraction du résultat.
13. Procédé de recherche d'informations selon l'une quelconque des revendications 10 à 12, dans lequel l'ensemble de données comporte des données d'aide à la sélection d'au moins un docu ent.
14. Procédé de recherche d'informations selon l'une quelconque des revendications 10 à 13, dans lequel on insère dans la chaîne de caractères de la table de représentation au moins une zone d'informations de type numérique codée sur un nombre prédéterminé d' octets délimité par au moins une balise d'indication de cette zone numérique.
15. Procédé de recherche d'informations selon la revendication 14, dans lequel la balise d'indication de la zone numérique est en outre une balise d'indication d'une convention de présentation de cette zone numérique.
16. Procédé de recherche d'informations selon l'une quelconque des revendications 10 à 15, dans lequel les documents stockés étant répartis en différents types de documents, on définit pour chaque type de documents un ensemble de balises destinées à être insérées ans la chaîne de caractères de la table de représentation, chaque balise de cet ensemble ayant une signification spécifique à ce type de documents.
17. Procédé de recherche d'informations selon l'une quelconque des revendications 10 à 16, dans lequel on insère dans la chaîne de caractères de la table de représentation au moins un ensemble de données exprimées en écriture phonétique délimité par au moins une balise d'indication d'écriture phonétique.
18. Procédé de recherche d'informations selon l'une quelconque des revendications 10 à 17, dans lequel on insère dans la chaîne de caractères de la table de représentation au moins une balise d'indication qu'un nombre prédéterminé de caractères suivant cette balise dans la chaîne de caractères de la table de représentation n'a pas à être balayé lors de l'étape de sélection.
19. Procédé de recherche d'informations selon l'une quelconque des revendications 10 à 18, dans lequel on insère dans la chaîne de caractères de la table de représentation au moins un ensemble de données correspondant à une analyse grammaticale d'une partie du contenu d'au moins un document stocké, délimité par au moins une balise d'indication d'analyse grammaticale.
20. Procédé de recherche d'informations selon l'une q uelconque des revendications 10 à 19, dans lequel on insère dans la chaîne de caractères de la table de représentation au moins un ensemble de données correspondant à des méta-données de description d'une partie du contenu d'au moins un document stocké, délimité par au moins une balise d'indication de méta- données.
21. Procédé de recherche d'informations selon l'une q uelconque des revendications 10 à 20, dans lequel on insère dans la chaîne de caractères de la table de représentation au moins une balise pour lancer un programme prédéterminé.
22. Procédé de recherche d'informations selon l'une q uelconque des revendications 1 à 21 , dans lequel : - chaque document stocké comportant des informations réparties dans plusieurs rubriques distinctes prédéterminées comm unes à tous les documents stockés, le résultat est affiché sous la forme d'un aperçu comportant une zone d'aperçu pour chaque ru brique distincte commune et comportant une liste de documents initialement sélectionnés pour des informations qu'ils contiennent jugées pertinentes en fonction de la requête, - chaque zone d'aperçu est désactivable, et - lorsqu'on désactive au moins une zone d'aperçu, on maintient uniquement dans la liste affichée chaque document initialement sélectionné pour des informations jugées pertinentes que ce document comporte dans au moins une rubrique correspondant à au moins une zone d'aperçu qui reste activée.
23. Moteur de recherche d'informations dans des documents stockés dans une mémoire électronique, comportant : - des moyens de génération d'une table de représentation des documents stockés, cette table comportant une chaîne de caractères comprenant au moins une partie des informations des documents stockés, - des moyens de sélection d'au moins un document parmi les documents stockés, à partir d'une requête comportant au moins une chaîne de caractères prédéterminée, caractérisé en ce qu'il comporte des moyens d'extraction d'un résultat à l'aide de la table de représentation, à partir d'informations contenues dans la chaîne de caractères de la table de représentation jugées pertinentes en fonction de la requête, en vue de l'affichage de ce résultat sous forme d'un aperçu d'informations relatives au document sélectionné.
24. Microprocesseur comportant des instructions programmées pour la mise en œuvre d'un procédé de recherche d'informations selon l'une quelconque des revendications 1 à 22.
25. Microprocesseur selon la revendication 24, comportant e n outre des moyens de stockage d'au moins une table dictionnaire comprenant un ensemble de mots dans une langue prédéterminée, chaque mot étant associé dans cette table dictionnaire à des données d'analyse grammaticale.
EP05742860A 2004-03-23 2005-03-18 Procede de recherche d'informations, moteur de recherche et microprocesseur pour la mise en oeuvre de ce procede Withdrawn EP1733324A1 (fr)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
FR0402939A FR2868178B1 (fr) 2004-03-23 2004-03-23 Moteur de recherche pour les documents texte stockes dans les microordinateurs
FR0409271A FR2874719B1 (fr) 2004-09-02 2004-09-02 Procede de recherche et d'affichage de la recherche parmi les documents texte stockes dans les ordinateurs
FR0502604A FR2870023B1 (fr) 2004-03-23 2005-03-16 Procede de recherche d'informations, moteur de recherche et microprocesseur pour la mise en oeuvre du procede
PCT/FR2005/000659 WO2005101240A1 (fr) 2004-03-23 2005-03-18 Procede de recherche d'informations, moteur de recherche et microprocesseur pour la mise en oeuvre de ce procede

Publications (1)

Publication Number Publication Date
EP1733324A1 true EP1733324A1 (fr) 2006-12-20

Family

ID=35456166

Family Applications (1)

Application Number Title Priority Date Filing Date
EP05742860A Withdrawn EP1733324A1 (fr) 2004-03-23 2005-03-18 Procede de recherche d'informations, moteur de recherche et microprocesseur pour la mise en oeuvre de ce procede

Country Status (4)

Country Link
US (1) US20070179932A1 (fr)
EP (1) EP1733324A1 (fr)
FR (1) FR2870023B1 (fr)
WO (1) WO2005101240A1 (fr)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104065681A (zh) * 2013-03-20 2014-09-24 腾讯科技(深圳)有限公司 对附件中的加密压缩包进行预览的方法和系统

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3367268A1 (fr) 2000-02-22 2018-08-29 Nokia Technologies Oy Codage spatial et affichage d'informations
US8200676B2 (en) 2005-06-28 2012-06-12 Nokia Corporation User interface for geographic search
US8650652B2 (en) * 2005-09-26 2014-02-11 Blackberry Limited Rendering subject identification on protected messages lacking such identification
CN100356370C (zh) * 2005-12-15 2007-12-19 无锡永中科技有限公司 提高文字处理文档打开速度的处理方法
WO2007095224A2 (fr) 2006-02-10 2007-08-23 Metacarta, Inc. Systemes et procedes pour des miniatures spatiales et cartes compagnon pour des objets de media
WO2007146298A2 (fr) 2006-06-12 2007-12-21 Metacarta, Inc. Systèmes et procédés pour une organisation et une présentation hiérarchiques des résultats d'une recherche géographique
US20080040336A1 (en) * 2006-08-04 2008-02-14 Metacarta, Inc. Systems and methods for presenting results of geographic text searches
US9721157B2 (en) 2006-08-04 2017-08-01 Nokia Technologies Oy Systems and methods for obtaining and using information from map images
US20080133502A1 (en) * 2006-12-01 2008-06-05 Elena Gurevich System and method for utilizing multiple values of a search criteria
WO2009075689A2 (fr) 2006-12-21 2009-06-18 Metacarta, Inc. Procédés de systèmes d'utilisation de métadonnées géographiques dans l'extraction d'information et d'affichages de documents
US8046353B2 (en) * 2007-11-02 2011-10-25 Citrix Online Llc Method and apparatus for searching a hierarchical database and an unstructured database with a single search query
JP5235798B2 (ja) * 2009-06-22 2013-07-10 富士フイルム株式会社 撮影装置及びその制御方法
US10157223B2 (en) * 2016-03-15 2018-12-18 Accenture Global Solutions Limited Identifying trends associated with topics from natural language text
US20190294385A1 (en) * 2018-03-22 2019-09-26 Xerox Corporation Method and system for arranging and printing pages according to search criteria

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2715486B1 (fr) * 1994-01-21 1996-03-29 Alain Nicolas Piaton Procédé de comparaison de fichiers informatiques.
JPH1115759A (ja) * 1997-06-16 1999-01-22 Digital Equip Corp <Dec> 全テキストインデックス型のメール保存装置
US6493703B1 (en) * 1999-05-11 2002-12-10 Prophet Financial Systems System and method for implementing intelligent online community message board
US7178099B2 (en) * 2001-01-23 2007-02-13 Inxight Software, Inc. Meta-content analysis and annotation of email and other electronic documents
US20020103867A1 (en) * 2001-01-29 2002-08-01 Theo Schilter Method and system for matching and exchanging unsorted messages via a communications network
WO2002065316A1 (fr) * 2001-02-12 2002-08-22 Legato Systems, Inc. Systeme et procede pour indexer des messages electroniques uniques et utilisations de ceux-ci
US7162483B2 (en) * 2001-07-16 2007-01-09 Friman Shlomo E Method and apparatus for searching multiple data element type files
FR2827686B1 (fr) * 2001-07-19 2004-05-28 Schneider Automation Utilisation d'hyperliens dans un programme d'une application d'automatisme et station de programmation d'une telle application
US6785681B2 (en) * 2001-07-31 2004-08-31 Intel Corporation Generating a list of people relevant to a task
FR2845789B1 (fr) * 2002-10-09 2006-10-13 France Telecom Systeme et procede de traitement et de visualisation des resultats de recherches effectuees par un moteur de recherche a base d'indexation, modele d'interface et meta-modele correspondants
WO2006011819A1 (fr) * 2004-07-30 2006-02-02 Eurekster, Inc. Moteur de recherche adaptatif

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2005101240A1 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104065681A (zh) * 2013-03-20 2014-09-24 腾讯科技(深圳)有限公司 对附件中的加密压缩包进行预览的方法和系统
CN104065681B (zh) * 2013-03-20 2018-06-15 腾讯科技(深圳)有限公司 对附件中的加密压缩包进行预览的方法和系统

Also Published As

Publication number Publication date
WO2005101240A1 (fr) 2005-10-27
US20070179932A1 (en) 2007-08-02
FR2870023A1 (fr) 2005-11-11
FR2870023B1 (fr) 2007-02-23

Similar Documents

Publication Publication Date Title
EP1733324A1 (fr) Procede de recherche d&#39;informations, moteur de recherche et microprocesseur pour la mise en oeuvre de ce procede
Svenonius The intellectual foundation of information organization
US7788262B1 (en) Method and system for creating context based summary
CN102053991B (zh) 用于多语言文档检索的方法及系统
Mäkelä et al. Wrangling with Non-Standard Data.
FR2975201A1 (fr) Analyse de texte utilisant des proprietes de listes linguistiques et non-linguistiques
US20130080152A1 (en) Linguistically-adapted structural query annotation
WO2002067142A2 (fr) Dispositif d&#39;extraction d&#39;informations d&#39;un texte a base de connaissances
JP6902945B2 (ja) テキスト要約システム
CN110019820B (zh) 一种病历中主诉与现病史症状时间一致性检测方法
EP2601573A1 (fr) Procédé et système permettant d&#39;intégrer des systèmes basés sur le web à des applications locales de traitement de documents
Gharatkar et al. Review preprocessing using data cleaning and stemming technique
Hayes Bit lit
Guven The comparison of language models with a novel text filtering approach for turkish sentiment analysis
Nagy et al. Noun compound and named entity recognition and their usability in keyphrase extraction
FR2986882A1 (fr) Procede d&#39;identification d&#39;un ensemble de phrases d&#39;un document numerique, procede de generation d&#39;un document numerique, dispositif associe
JPS61248160A (ja) 文書情報登録方式
Vázquez-González et al. Creating a corpus of historical documents for emotions identification
US11783112B1 (en) Framework agnostic summarization of multi-channel communication
Muhundan et al. Collection Management Tobacco Settlement Documents (CMT) CS5604 Fall 2019
JP7116940B2 (ja) オープンデータを効率的に構造化し補正する方法及びプログラム
Thottempudi A visual narrative of ramayana using extractive summarization topic modeling and named entity recognition
TWI703453B (zh) 建議詞語生成裝置、記錄有建議詞語生成程式之電腦可讀取之記錄媒體及建議詞語生成方法
Thanh Machine translation of proper names from english and french into vietnamese: an error analysis and some proposed solutions
TW201005557A (en) Translation system by words capturing and method thereof

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20061020

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LI LT LU MC NL PL PT RO SE SI SK TR

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20080603

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20081001