GB2352547A - Controlling access to a secure server from a remote computer - Google Patents

Controlling access to a secure server from a remote computer Download PDF

Info

Publication number
GB2352547A
GB2352547A GB0024068A GB0024068A GB2352547A GB 2352547 A GB2352547 A GB 2352547A GB 0024068 A GB0024068 A GB 0024068A GB 0024068 A GB0024068 A GB 0024068A GB 2352547 A GB2352547 A GB 2352547A
Authority
GB
United Kingdom
Prior art keywords
user
value
query
documents
server
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.)
Granted
Application number
GB0024068A
Other versions
GB0024068D0 (en
GB2352547B (en
Inventor
Isaak Karaev
George Baird
Pavel Blazek
Eduard Kitain
Dmitry Prohorov
Jacques Leisy
Yuri Urazov
Stephen M Zucknovich
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.)
Multex Systems Inc
Original Assignee
Multex Systems Inc
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 US08/658,966 external-priority patent/US5802518A/en
Application filed by Multex Systems Inc filed Critical Multex Systems Inc
Publication of GB0024068D0 publication Critical patent/GB0024068D0/en
Publication of GB2352547A publication Critical patent/GB2352547A/en
Application granted granted Critical
Publication of GB2352547B publication Critical patent/GB2352547B/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Controlling access to a secure server from a remote computer including the steps of transmitting a verification signature and state information containing an authorisation variable to the remote computer. The verification signature and state information are subsequently included in requests for information sent from the remote computer to the secure server. The secure server extracts the authorisation variable from the received state information and either processes the request if the authorisation variable matches the value stored at the server, or transmits a new authorisation variable to the remote server if the received authorisation variable was empty.

Description

2352547 INFORKATION DELIVERY SYSTEM AM METHOD Fic1d of Invention The
present invention is directed to a com.puter-based system and method for the electronic distribution o-F information, and more particularly', for the distribution of information via the Internet to auchorized recioients.
Copyright Notice A portion of the disclosure of this patent documen contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent doatment or patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Background of the Invention
Current computer technology allows dcuments and other information to be distributed electronically, from computer to computer. Electronic distribution is 2 generally cost effective when compared with hard copy distribution methods. Global computer networks, such as the Internet, enable information to be distributed to a wide range of people at locations around the world. One of the many advantages of the Internet, particularly the World Wide Web ("WWW"), is that the communication protocols used are non -proprietary, thus enabling eid users to access and use the Internet without the need for customized hardware or software.
Often, an information provider wishes to provide information to users on a controlled basis. For example, the information provider may want to provide information only to those users who have paid a fee or completed a registration process, and also may want to restrict access to certain types of information to certain classes of users. Additionally, the information provider may require that the format of the information provided to one user be different from the format of the same information provided to another use-- or class of users.
Further, some users only may be interested in certain types of information available frgm a particular information provider. Users may wish that the information received from an information provider be output in a format specific to that user.
Existing technology allows an information provider who distributes information via the WWW to restrict access to authorized users by means of, for example, a user identification code and/or password. However, current password authorization methods used on the WWW have a number of significant problems. When using a browser program, such as Netscape's Navigator program or Microsoft's Internet Explorer program, to access web pages, a user is simply making a request to a remote web server (having a unique IP address) for a file. This 3 f ile is scored in the user's computer local memory and is output by the browser program. Typically, web pages are in HTML format (HyperText Markup Language) Each time the user 'moves" to a new web page, the browser program S makes a new request to a web server (which may be the same or another web se-rver) for a file. Thus, although a user may provide a password to obtain a file from a web server, the user typically does not: log-out when the user has finished with this file -- the user simply issues a request for a file on another web server or closes down his or her browser program.
when a user initially accesses a web server, most browser programs can provide the web server with an 1S identification code identifying the particular browser as well as the user's Internet Protocol (11IP11) address. However, when a user accesses a web server through a proxy server, many users may appear to have the same IP address.
To prevent concurrent use of a user's idencification code and password (e. g., to prevent: the user from distribucing the user's identification code and password for use by others) when a user initially accesses a web server, the 2S web server, using current password technology, can prevent other access with that identification code for a predetermined period of time. However, if the user moves to another computer or browser program, then the I authorized user will be prevented from accessing the web server from the new computer or browser program.
Thus, a secure sign-on procedure is needed that prevents multiple users using the same identification code and allows an authorized user to move to another computer or 3S browser program and still be permitted to access the secure web server.
4 When providing information via the WM4, information providers can, in-a crude way, "customize" the information for a user. one simple example of customization is providing the user with the results of a S query. Here, the user submits a query to the web server, e. g -, by completing a f orm, and, based on the user I s request, the web server creates a web page (or form) comprising information satisfying the query and transfers this web page (or form) to the user's browser program for display. In such systems, the program used to create the web page (or form) is "hard coded", so that if the information provider wishes to change the _"crmat of the information, this program must be recoded or replaced. Recoding or replacing such programs is inefficient and often Lime consuming.
Further, every user who submits the same query to the web server will receive the same results in the same format. Existing methods of providing information to WWW users do not enable different users to be automatically provided with different views of the information. Thus, a procedure is needed to enable the provision of customized views of requested information to WWW users.
When a user submits a query to a web server, the web server will typically format and submit the received query to a database program or search engine. There can be many types of queries that a user submits via an, information provider's web server. For example, some queries may request information based on categories contained in a relational database (e.g., all presidents who were born in Virginia) while ocher queries -may require full text searches of textual documents (e.g., all documents containing the words "sell" and "IBM").
Currently, information providers maintain one database of information that is used to obtain the results of all types of queries. However, while a database search engine may be fast and efficient in obtaining search results for some types of queries, it may be slow and inefficient in obtaining search results for other types of queries. 5 Moreover, when responding to queries via the WWW, the web server is accessed by many users. Due to communication delays over the Internet, it is wasteful to cie-up the database program or search engine until each user has received the full results of the user's query. It would be desirable in some instances to provide a search mechanism that allows asynchronous searching of a database by multiple web users such that the database program or search engine can take advantage of 1S communication delays when serving multiple users.
Thus, in summary, an Internet information delivery system is needed that has a secure but flexible password control mechanism so that information is provided only to users who are authorized to receive it, that efficiently retrieves any requested information, and that customizes the views of information provided to users in a flexible and robust manner.
Summary of the Invention
The present invention provides an electronic information distribution system that allows remote users to recei; ve, access and query information that is stored in electronic 3C) form at a central server, called a repository server. Ideally, users communicate with the repository server via the Internet. The repository server is coupled to the Internet by a web server. The repository server comprises or is coupled to a plurality of databases of 35 information stored in electronic form.
Preferably, the repository server is coupled to one or 6 more remote contributor workstations. The informationthat is stored at the repository server it received from the contributor workstations in electronic form. According to the representative embodiment of the present invention, the information received from the contributor workstations are files comprising one or more documents. These documents typically would contain text, data, charts, graphs, spreadsheet's and the like, or combinations thereof, and may be in many formats. it will be appreciated that any information that can be stored in digital form, such as photographs, videos,. sound recorlings, etc. may be stored in the files received from the contributor workstations. In the representative embodiment, files received from the contributor workstations are converted at a central site into predetermined format, e.g., for printable documents, a common viewing format such as, for example, PDF format, and thereafter provided to the repository server. In the reoresentative embodiment, each document submitted to the repository server is accompanied by a document profile comprising information organized according to predefined fields relating to the document.
The web server includes a web server program. The web 2S server also includes a web server helper application using the appropriate API such as, for example, the Common Gateway Interface (CGI) program, BGI, NSAPI or ISAPI.
According to the representative embodiment of the present invention, each user has a user computer, such as, for example, a personal computer with an Intel Pentium processor and a fast modem that the user can use to connect to the Internet. The user computer has one or more local storage devices. In the representative embodiment, the user comouter executes Netscaoe's Navigator 2.1 browser program. However, other browser programs, such the Mosaic browser or Microsoft's Internet Explorer 2. 0 browser could also be used. As used herein, the browser programs executed by the user computer will be termed "Internet browsers." 5 When the user initially accesses the web server, the user is required to provide a user identification code P'ID") and a password. The web sejver submits a login request to the CGI program to verify that no other user is using the same ID. According to the present invention, a user is permitted to access the web server from a differenc. user computer or using a different Internet browser; however, the present invention prevents the user (or other users) from "concurrently" accessing the web server is from more than one computer or Internet browser using the same ID.
Once the user has provided the ID and password, the repository server will determine what information that user is authorized to receive. According to the present invention, each user has authorization to access all or a subset of the information stored at the repository server.
In the representative embodiment, the repository server can provide the user with a list of new documents that have been recently received by the repository server and which that user is authorized to access. The user may also request a list of documents that fit certain user- specified search criteria. A list of the documents that match that search criteria and-which the user is authorized to access is provided to the user computer. The user can then select, request and view documents from these lists. 35 Different users may be permitted to access different subsets of the documents stored at the central repository.
According to the present invention, the web server is coupled to at least two database search engines in the repository server. At least one search engine performs at least full text searching of textual documents. At least one ' other search engine performs at least searching on predefined fields of inf6rmation. When a search is submitted by the user to the web server, it is determined what type of search is required, and the appropriate query (e.g., full text, search an predefined fields) is formulated 'and submitted to the appropriate search engine. The search engine returns a results set to the web server. Typically, the results set will comprise a list of documents satisfying the query and that the user has authorization to access. This architecture ensures that the most efficient search engine is used to obtain the search results and allows more than one search to be conducted in parallel.
-In. the -represent at--i-ve embed-i-ment, the rep-os-i-tory server includes a number of optimizers. An authorization, optimizer builds the least expensive (in terms of execution time) search selection clause which will restrict the user's query to the database subset that the user is authorized to access. A sorted queries optimizer speedily provides users with the results set even when the number of elements in the results set is substantial. The web server sends a query block to repository server for optimization and the actual database query is built by a.d-atabas.server.
Communication delays over the Internet: are used to make apparent response time at the web server faster by interleaving server access and response through an asynchronous protocol to the search engine.
9 The web server can provide customized views of the information provided to users. The web server has access to a number of different template forms. The template forms are written in a novel computer language, called herein a "research access language" (or RAL) that describes how to format a HTML document and integrate the information from results set into this format. The web server interprets the template form and creates a HTML page comprising the information from the results set.
The web server may have a number of template forms, for each type of query, f or each user or class of user, etc. Thus, each user or class of users may receive information in a format defined for that user or class of users. The template forms of the present invention provide an additional advantage. Whenever the information provider wishes to change the output format of the information provided to users, a new template form is created and used by the web server. Template forms can easily be created (without having to "hardcodell any program) and can be loaded for use without having to take the web server off-line.
The present invention is ideally suited for providing investment research reports to investors and investor advisors. Brokerage and investment banking firms create mounds of investment research reports on a daily basis concerning thousands of companies and industries. These reports are provided to investors in electronic form ' At present, these reports are distributed over proprietary networks, requiring the installation and maintenance of expensive hardware, software and communication lines. Because of this expense, the number of users who have access to these proprietary networks is limited. In the representative embodiment, the present invention enables investment research reports to be securely distributed to investors over the Internet. The present invention overcomes the disadvantages of Internet (e.g., slower than proprietary networks, less secure, user interface limited to HTML format) and enables investment research reports to be distributed to a wider range of investors who are authorized to receive such reports.
In a further aspect of the invention, there is provided a computerimplemented system for the secure electronic dis--ribution of research documents over the world wide web to investors who are authorized to receive said research documents, comiDrising:
a repository server receiving from a plurality of contributors a plurality of research documents in electronic form and a plurality of corresponding document profiles comprising information relating to each research document including authorization information specifying who is permitted to access each research document., the repository server including a first database for structured query searches storing the information from the plurality of document profiles and a second database for full text searches storing searchable full text of the plurality of research reports; and a web server coupled to the repository server and coupled to the world wide web, the web server receiving a request from an investor for research documents that satisfy a query, the web server determining whether the first database or the second database should be searched based upon the type of query and thereafter requesting that the repository server query said determined database and transmit to the web server a list of research. i, documents that satisfy the query and which the investor is authorized to access according to the authorization information, the web server thereafter formatting the list of documents according to a template form and transmitting the formatted list of documents to the investor.
Preferably, the template form is selected by the investor.
Preferably, the template form is selected bythe web server according to the identity of the investor.
Preferably, the system further comprises a user computer used by the investor and executing a browser program, the user computer coupled to the world wide web.
In that case, the query may be formulated by the investor at the user computer.
Preferably, the system further comprises a plurality of contributor workstations, each coupled to the repository server, for transmitting to the repository server the plurality of research documents is and the plurality of corresponding document profiles.
In yet a further aspect, there is provided a computer-based system for the secure electronic distribution of documents over the world wide web to users who are authorized to receive said documents, comprising:
a plurality of templates, each template specifying an output format; means for receiving a plurality of documents in electronic form from a plurality of contributors; means for receiving a plurality of document profiles from the plurality of contributors, each document profile corresponding to one of the plurality of documents and comprising information related to said one of the plurality of documents; means for receiving authorization information for each one. of the plurality of documents, the authorization information defining who is authorized to access said document; means for converting the plurality of documents into a common format; means for storing the plurality of documents in said common format; a relational database for storing the plurality of document profiles and the authorization information; means for extracting text from the pl'uraliry of documents; a full text database for storing the extracted text; means for receiving a user ident ification code from a browser program of remote user; means for blocking simultaneous use of the user identification code with aueomatic re-enablement after a predetermined period of inactivity from the user identification code; means for submitting an initial query to the relational database for all documents the remote user is authorized to access and that were received from contributors during a previous preset time period; means for transmitting results of queries to the browser program for display according to the format specified in one of the plurality of templates; means for enabling the remote user to submit queries; means for determining if a submitted query includes a text search parameter, and if so, routing said query to the full text database, and if not, routing the query to the relational database; and means for executing the submitted queries by selecting all documents the remote user is authorized to access and that satisfy the submitted query.
(0 According to still a further aspect, there is provided a computer-based system f or the secure electronic distribution of research documents over the world wide web to investors who are authorized to receive said documents, comprising:
a plurality of templates, each template specifying an outr)ut format; means for receiving a plurality of research documents in electronic form from a plurality of contributors; means for receiving a plurality of research document profiles from the plurality of contributors, each research document profile corresponding to one of the plurality of research documents and comprising information related to said one of the plurality of research documents; means for receiving authorization information for each one of the plurality of research documents, the authorization information defining who is authorized to access said research document; a relational database for storing the plurality of research document profiles and the authorization information; means for extracting text from the plurality of research documents; a full text database for storing the extracted text; means for receiving a user identification code from a browser program operated by a remote user; means for submitting an initial query to the relational database for all research documents the remote user is authorized to access and that were received from contributors during a previous preset time period; means for ' transmitting results of queries to the browser program for display according to the format specified in one of the plurality of templates; means for enabling the remote user to submit queries; means for determining if a submitted query includes a text search parameter, and if so, routing said query to the full text database, and if not, routing the query to the relational database; means for optimizing predetermined queries; means for executing the submitted queries by selecting all research documents the remote user is authorized to access and that satisfy the submitted query.
Preferably, the system of this aspect further comprises means for blocking simultaneous use of the user identification code with automatic re-enablement after a predetermined period of inactivity from the user identification code.
The system may further comprise means for converting the plurality of research documents into a common format; and means for storing the plurality of research documents in said common format.
The system may further comprise means for enabling the remote user to select a research document from the results of queries; and means for transmitting the selected document to the remote user's browser program.
In a further aspect of the invention, there is provided a computerimplemented system for the secure electronic distribution of research documents over Lie world wide web to investors who are authorized to receive said research documents, comprising:
a reposiLory server receiving from a plurality of contributors a plurality of research documents in electronic form and a plurality of corresponding document profiles comprising information relating to each research document including authorization information specifying who is permitted to access each research document, the repository server including a database storing the information from the plurality of document profiles for storing searchable f ull text of the plurality of research reports; and a web server coupled to the repository server and coupled to the world wide web, the web server ' receiving a request from an investor for research documents that satisfy a query, the web server requesting that the repository server query said database and transmit to the web server a list of research documents that satisfy the query and which the investor is authorized to access according to the authorization information, the web server thereafter formatting the list of documents according to a template form and transmitting the formatted list of documents to the investor.
In another aspect of the invention, there is provided a computerimplemented system for the secure electronic distribution of research documents over the world wide web to investors who are authorized to receive said research documents, comprising:
a repository server receiving from a plurality of contributors a plurality of research documents in electronic form and a plurality of corresponding document profiles comprising information relating to each research document including authorization information specifying who is permitted to access each research document, the repository server including a first database for structured query searches storing the information from the plurality of document profiles and a second database for full text searches storing searchable full text of the plurality of research reports; and a web server coupled to the repository server and couoled to the world wide web, the web server receiving a request from an investor for research documents that satisfy a query, the web server determining whether the first database or the second database should be searched based upon the type of query and thereafter requesting that the repository server query said determined database and transmit to the web server a list of research documents that satisfy the query and which the investor is authorized to access according to the authorization information, the web server thereafter transmitting the list of documents to the investor.
The invention also extends to a system for creating a web page including search results arising from a database query, comprising:
a web server including an output channel coupled to the Internet; a plurality of templates, each template specifying an outpuL format and including one or mor,'e elements; a database program coupled to the web server; means for selecting one of the plurality of templates; means for receiving search results from the database program; means for sequentially 'passing the contents of the selected template to the output channel until an element is reached; means for processing an element in the selected template in combination with the search results according to a set of predetermined rules; means for passing the output of the processing step to the output channel; means for flushing output channel at predetermined intervals.
In one aspect of the invention, there is Provided a method to determine whether a user is authorized to access a secure server from a remote computer where the secure server does not require that the user logs off, comprising:
receiving a user identification code from the remote computer; 1'7 verifying the user identification code against a database of authorized users; if verified, providing the remote computer with a verification signature; transmitting state information to the remote computer for storage at the remote computer, the state information including an authorization variable; receiving a request for information from the remote computer, the request including the verification signature; validating the verification signature; receiving the state information from the remote comouter; retrieving the authorization variable from the state information; if the authorization variable is empty, providing a new value for the authorization variable, storing the new value as associated with the user identification code at a central location, and transmitting the new value to the remote computer; and I if the authorization variable is no empty, determining if the value of the authorization variable retrieved from the state information matches a value fo.
the authorization variable stored at the central location associated with the user identification code, and if there is a match, processing the request for information.
In that case, the method my further ccrTprise the f inal. 1, step of denying access if the value of the authorization variable retrieved from the state information does not match the value for the authorization variable stored at the central location associated with the user identification code.
The user identification code way comprise a user ID and a password.
Preferably, the step of providing a new value for the authorization variable comprises providing a random value for the authorization variable.
Preferably, the method further comprises the step of storing a time of access at the central location along with the value of the authorization variable whenever a request for information is received.
In that case, the step of determining if the value of the authorization variable retrieved from the state information matches a value for theauthorization variable stored at the central location associated with the user identification code may further comprise determining that there is a mtach, regardless of the value of the authorization variable retrieved from the state information.
Preferably, the request for information is a request for an investment research report.
The method may further comprise the step of determining which investment research reports the user is permitted to access.
The steps of transmitting may further comprise transmitting via the Internet.
In that case, the remote computer may include a browser program, and the step of transmitting the new value to the remote computer may further comprise the step of storing the new value at the remote computer.
In accordance with still a further aspect of the present invention, there is provided a method for optimizing search requests received from remote computers operated by users, comprising:
storing at a central server a plurality of document profiles, each document profile corresponding to a -document and comprising information related to thedocument, including a set of one or more authorization groups for the document, each authorization group corresr)onding with a contributor of the document; 19for each user, storing at the central server a set of accessible groups specifying which authorization groups of documents the user is permitted to access; receiving, at a web server, a search request from a user at remote computer for documents, the search requesting including a limitation that the documents are from a snecified contributor; providing the search request to the central server; at the central server, creating a first list of groups of documents stored at the central server listing the user's accessible groups that correspond with the specified contributor; at the central server, creating a second list of groups of documents stored At the central server listing the groups that are not accessible to the user and that correspond with the specified contributor; if the first list is empty, denying the search request; if the second list is empty, then constructing a search for all documents of the specified contributor that satisfy the search request; and otherwise, determining selecting the shorter of the first list and the second list, and if the shorter list is the first list, then constructing a search restricted to groups in the first list, and if the shorter list is the second list-, then constructing a search restricted to groups of the specified contributor not in the second list.
Preferably, the method further comprises the steps of executing the search at the central server; providing the search results to the web server; formatting the search results at the web server; and providing the formatted search results via the Internet to the remote computer.
Preferably, the search results comprise a list of documents that satisfy the constructed search- 2C> According to another aspect of the invention there is provided a computer-implemented method for optimizing a query that requests a list of documents sorted by time, the documents stored in a database, comprising:
providing a first query requesting a list of documents sorted by time and a maximum number of documents; determining a count of the number of documents that satisfy the first query; if the count is less than or equal to a predetermined threshold, then execute the first query and return the results; if the count is greater than a predetermined threshold, then determine if the first query is for documents that are dated within a time range; if the first query is not for documents that are dated within a time range, then select a default time range as the time range; create a second query comprising the first query with a restriction for -documents dated within a predetermined first Portion of the time range; execute the second query and return the results; if the number of results returned is less than the maximum number of documents, create a third query comprising the first query with a restriction for documents dated within a remaining portion of the time range; and execute the second query and return the results;-.
Preferably, the maximum number of documents is set by the user.
Preferably, the step of providing a first,query requesting a list of documents sorted by time further comprises the step of transmitting the first query over the Internet from a remote user.
In that case, preferably, the step of determining a count further comprises the step of providing the count over the Internet to the remote user as soon as determined.
Preferably, the method further comprises the step of providing results over the Internet to the remote user as soon as partial results are returned.
In another aspect of the invention, there is provided, for use at a web server coupled to the Internet and a database program, a method for creating a web page comprising search results arising from a database query, comprising:
providing a plurality of templates, each template specifying 'an output format and including one or more elements; selecting one of the plurality of templates; receiving search results from the database program; sequentially passing the contents of the selected template to an output channel until an element is reached; upon reaching an element, processing the element and the search results according to a set of predetermined rules; passing the output of the previous step to the output channel; and repeating the previous three steps until reaching the end of the template - Preferably, this method further comprises the step of flushing output channel.
Preferably, this method further comprises the step of receiving the database query over the Internet from a remote user.
The remote user may select the one of the plurality of templates.
Preferably, this method further comprises the initial steps of: receiving a user identification code 2-2 from the remote user; and determining if the remote user is entitled to access the web server.
In that case, the step of providing a plurality of templates may further comprise providing a plurality of templates according to the user identification code.
In a further aspect of the present invention, there is provided a method for the secure electronic distribution of documents over the world wide web to users who are authorized to receive said documents, comprising:
providing a plurality of teMDlates, each template specifying an output format; receiving a plurality of documents in electronic form from a plurality of contributors; receiving a plurality of document profiles from the plurality of contributors, each document. profile corresponding to one of the plurality of documents and comprising information related to said one of the plurality of documents; receiving authorization information for each one of the plurality of documents, the authorization information defining who is authorized to access said document; converting the plurality of documents into a common format; storing the plurality of documents in said common format; storing the plurality of document profiles in a relational database; storing.the authorization information for each document in the relational database; extracting text from the plurality of documents; storing the extracted text in a full text database; receiving a user identification code from a browser program of remote user; blocking simultaneous use of the user identification code; automatically re-enabling use of the user identification code after a predetermined period of inactivity from the user identification code; initially, executing a first query to the relational database for all documents the remote user is authorized to access and that were received from contributors during a previous preset time period; outputting results of the first query according to the format specified in one of the plurality of templates; enabling the remote user to submit queries; for each submitted query, determining if the query includes a text search parameter, and if so, routing said query to the full text database, and if not, routing the query to the relational database; executing the submitted queries by selecting all documents the remote user is authorized to access and that satisfy the submitted query; and outputting the results of the submitted query according to the format specified in one of the plurality of templates.
According to another aspect, a computer-based system is provided for the secure electronic distribution of documents over the world wide web to users who are authorized to receive said documents The system comprises:
a plurality of templates, each template specifying an output format; means for receiving a plurality of documents in electronic form from a plurality of contributors; means for receiving a plurality of document profiles from the plurality of contributors, each document profile 2L4- corresponding to one of the plurality of documents and comprising information related to said one of the plurality of documents; means for receiving authorization information for each one of the plurality of documents, the authorization information defining who is authorized to access said document; means for converting the plurality of documents into a common format; means for storing the plurality of documents in said common f ormat; a first database for storing the plurality of document profiles and the authorization information; means for extracting text from the plurality of documents; a second database for storing the extracted text; means for receiving a user identification code from a browser program of remote user; means for blocking simultaneous use of the user identification code with automatic re-enablement after a predetermined period of inactivity from the user identification code; means for submitting an initial query to the relational database for all documents the remote user is authorized to access and that were received from contributors during a previous preset time period; means for transmitting results of queries to the browser program for display according to the format.;, specified in one of the plurality of templates; means for enabling the remote user to submit queries; means for determining if a submitted query includes a text search parameter, and if so, routing said query to the second database, and if not, routing the query to the first database; and means for executing the submitted queries by selecting all -documents the remote user is authorized '-o access and that satisfy the submitted query.
Brief Doggrintion of ths Drawinas Fig. 1 is a diagram of the 6verall system architeccure of the present invention.
Fig- 2 is an example bulletin board screen display.
Fig. 3 is an example document query form screen display.
Fig. 4 is an example query results screen display.
Fig. S is a system architecture diagram of an enhanced system according to the present invention.
Detailed Desc-r!32tion For ease of description, the embodiment of the present invention described herein is that used for the electronic distribution of investment research reports and morning meeting notes ("reports") to investors via the Internet's World Wide Web ("WWW"). However, the invention is not so limited, and can be used, where appropriate, for the electronic distribution of other types of information via other types of networks.
Brokerage and investment banking firms spend large sums. of money creating, printing and distributing thousands of graphic-rich research reports to investors (e.g., customer's, remote sales offices, investment advisors, brokers, portfolio managers, etc.) Brokerage and investment banking firms distribute their reports only to selected investors (e.g., their customers). However, each investor may receive reports from more than one brokerage or investment banking firm. Investors require access to these reports on a timely basis. It is also desirable to search all available reports for those reports that may be of interest to the investor. The representative embodiment of the present invention provides an advanced, secure system to distribute reports on a timely basis from brokdrage and investment banking firms to investors and that allows investors to access and query a database of reports located at a remote location.
As used herein, the terms "investor,, and "user" include any end user who is permitted to receive or access information via the present invention, such as, for example, customers of brokerage and investmenr- banking firms, employees of brokerage and investment banking firms, investment advisors, brokers, bankers, portfolio and fund managers, journalists, analysts, economists, university professors, MBA students, etc.
Referring now to the drawings, and initially Fig. 1, there is illustrated an overall system architecture according to the present invention. A central repository server 2 is coupled, via a central site 1, to one or more remote contributor workstations 14, 16, 18. The contributor workstations 14, 16, 18 are used by brokerage and investment banking firms to submit reports to the repository server 2. optionally, the contributor workstations 14, 16, 18 may be coupled to the repository server 2 via proprietary network comprising a plurality of contributor servers 20, 22. Alternatively or additionally, a contributor workstation may provide reports to the repository. server 2 via the Internet.
In the representative embodiment, the contributor workstations execute a program called Multex Contributor TM, described in detail in the user manual titled 11MX Contributor - User Guide,, available from Multex Systems, Inc. of New York, New York and expressly incorporated herein by reference. The Multex Contributorlm program is a real-time windows-based document indexing and transfer program used to disseminate reports to the central site 1. The contributor simply completes a form (a document profile) displayed on the screen of the contributor workstation 14, 1G, 18 and, at the specified time, the Multex Contributor TM program transfers the report, along with the information'in the completed form, to the central site 1.
At the contributor workstation 14, 16, 18, the contributor completes a form relating to the report.
First, the contributor selects a rer)ort for distribution.
The report is stored, usually as a file, in electronic form on the contributor workstation 14, 16, 18 or on a server or network drive coupled to the contributor workstation 14, 16, 18. The report may be in any standard electronic format, for example, Pagemaker, Microsoft Word for Windows, Corel WordPerfect, etc. The form has fields relating to the report, for example, title, author, subject, date and time of creation, distribution level (setting distribution to a default group of investors or one of a set of predefined groups of investors) and expiration time. optionally, the contributor can enter additional information in the form, such as, for example, ticker symbol, industry group, synopsis, country, region, currency, etc.
once the report has been selected and the form completed, the user issues a "contribute" command to the Multex Contributor"' program and the report and all the information in the form is electronically transmitted to the contributor server 20, 22. In the representative embodiment, the reports are "pushed up" from the M. contributor servers 20, 22 to the central site 1.
At the central site 1, the reports are processed.
Typically, the central site comprises a network of computer processors. At the central site 1, each report is converted in to a predetermined a'predetermined format. In the representative embodiment, all reports received at the central site 1 are converted at the central site 1 into a format that can be read by the Acrobat Exchange program, available from Adobe Systems. The reports'are then provided by the central site 1 to the repository server 2.
Where desired, the repository server 2 can also receive, store and enable the distribution of other useful information, such as, for example, news reports received from wire services, government reports, product reviews, etc.
The repository server 2 comprises or is coupled to at least two database servers 11, 13. Each database server is coupled to a database storage device 10, 12. A relational database 10, 11 allows field searching. In the representative embodiment, the relational database 10, 11 is an SQL database server 11 coupled to a storage device 10. A full text database 12, 13 allows word or text searching. In the representative embodiment, the full text database 12, 13 is a full text search database server 13 (for example, a full text search engine available from Fulcrum of Ottawa, Canada) coupled to a storage device 12.
The information contained in the form is indexed in the relational database 11 to allow retrieval of the report by searching on such fields, e.g., searches by author, date, industry, etc. Where necessary, information in the (Q I form received from the contributor is mapped into "common" terminology as used by the relational database 11. For example, the terms "sports utilities" and "minivans" may be mapped and stored as the term "automobile." ASCII text is extracted from the report and stored in the full text database 12, 13 for full text searching.
The repository server 2 provides investors with lists of reports received from the contributor workstations 14, 16, 18 and allows investors to request lists of reports that fit certain criteria. The investor can select reports from these lists to down-load, view and/or print. Generally, lists of reports can be generated by the web server 4.
The contributor of a report can be notified that a particular investor has accessed that report. The repository server 2 maintains for each report a list of those who accessed that report. The repository server 2 can transmit that list to the report's contributor on a regular basis and/or when requested by the contributor.
The repository server 2 is coupled to a web server 4 2S which in turn is coupled to the Internet via, for example, a T1 or ISDN connection. The web server 4 is a high powered server computer that runs a web server program. In the representative embodiment, the web.,, server 4 executes Netscape's Commerce Server program.
The web server program allows web pages (in HTML format) to be accessed by investors. The web server 4 also executes other programs and subroutines as required.
Each investor has a user computer 6, 8, such as, for example, a personal computer with an Intel Pentium processor and a fast modem. In the representative embodiment, the user computer 6, 8 executes an Internet 21C>- browser program, such as, for example, Netscape Is Navigator 2.1 browser program. The Internet browser can read files in HTML format. In the reDresentacive embodiment, the Inernet browser has access to a plug-in 5 program that can read files in the predetermined format. In the representative embodiment, the plug-in is the Acrobat Exchange program, available from Adobe Systems that can read files in "-ndf" format. The user computer 6, 8 can connect with the Internet via, for example, a commercial Internet Service Provider.
The web serv'er 4 includes to a web server helDer application, which in the representative embodimenr- is the CGI (common gateway interface) program, that is IS activated by investors through web pages provided by the web server 4. CGI is an interface between the web server program. and other programs. CGI lets those other programs process HTML forms and other data coming from Internet browsers, and then lets the other programs send a resnonse back the web server 4 to be delivered to the Internet browser. The response can be HTML files, GIF files, PDF files or any data that the Internet browser can view. Thus, generally, when an Internet browser requests a document from the web server 4, the web server 4 server program finds the document and sends it to the Internet browser. However, if the Internet browser requests a CGI program, the web server 4 server program acts as a middleman between Lhe Internet browser and the CGI program. other web server helper applications, such as, for example, BGI, NSAPI or ISAPI, can be used in place of CGI within the principles of the p-resent invention.
Access to the web server 4 begins from an investor's Internet browser. Initially, the investor can access "public" web pages generally describing some of the features of the document delivery service of the present invention. If the investor chooses to proceed, the investor selects the "log-in" option from the inicial web page.
User Verification: The first step the web server 4 cakes in handling an investor request is verifying that the investor is permitted to access the information stored at the repository server 2. This is accomplished using the standard verification procedure built into the communication protocol between Internet browsers and web servers.
The web server 4 uses Netscape's Commerce Server's ability to call custom verification subroutines when a user tries to access CGI's and web pages. The web server 4 executes a subroutine and, using Netscape's NSAPI, receives the ID and password that the invescor is asked to provide by the server/browser, and then verifies the ID and password against a database of authorized users (the user database) maintained at the repository server 2. if the user is verified, the Internet browser will be given a verification signature. An investor who is not in the user database, or enters an incorrect password, is denied access to CGI Is and web pages on the web server 4 by simply having the subroutine return an "Access Denied" flag to the web server 4. This subroutine maintains an open connection to the user database to improve performance. i, Whenever an investor makes a query for a list of reports, the investor's Internet browser sends an HTTP (hypertext transfer request that represents what the user wants to the web server 4. If the request does not have a verification signature attached to it, the web server 4 sends a command back to the Internet browser, causing it to prompt the user for an ID and password. The Internet browser will then return this information to the web server 4, which will verify that the user is entitled to access the reports stored at the repository server 2. if the user is verified, the Internet browser will be given a verification signature. If not, the user will-be prompted again for his ID and password. Once access is verified, the web server 4 will start the CGI program named in the original HTTP request, along with any runtime parameters that are specified in the request. The CGI program first verifies that the user making the lo request (whose ID is passed to the CGI program by the web server 4 through an environment variable) is the only one using that 1D at that moment. This is done by the following method:
a. The CGI program gets the value of the Internet browser "cookie", and extracts the value for the named pair "mxauth" from the cookie.
b. If the value is empty, the CGI program indicates that this user is accessing the web server 4 for the first time since starting his or her Internet browser. This user then becomes the designated "current user of this ID11. A new random value for the I'mxauth" part of the browser cookie is generated, stored on the web server 4 under this user's ID, and sent back to the Internet browser, so that the Internet browser can send it back next time.
C. If the value is not empty, the CGI program indicates that this user has previously already accessed the web server 4 since starting the browser program, and has been given an authorizing cookie. If the llmxauth" value of the cookie does not match the value stored on the web server for this user, then this user has been suPerseded by another user using the same ID. The CGI does not perform the requested task, and tells the user that access is denied. If the I'mxauth" value of the cookie does match, then this user is authorized to continue, and the CGI'performs the requested task. Each time the user is authorized to continue, the time of the access is stored on the web server 4.
d. A stored cookie value that is over an hour old is considered "stale". A user whose code does not match a stale 'cookie is allowed access as if the user was initially signing o n, as per b.
above.
Part of the'rationale for this method comes from the lack of a 11 sign-of f 11 from a user. When a user "leaves" the web server 4 to browse other parts of the WWW, or closes is down his or her Internet browser, the web server 4 is not informed.
(For reference, it is noted that cookies are a general mechanism which server side connections, such as CGI scripts, can use to both store and retrieve information on a client side of an Internet connection. A web server, when returning an HTTP object to an Internet browser, may also send a piece of state information which the Internet browser will store. Included in the state object is a description of the range of URLs for which that state is valid. Future HTTP requests made by the Internet browser which fall within that range will include a transmittal of the current value of the sta,te object from the Internet browser to the web server. For no compelling reason, the state object is known in the art as a "cookie. ") other systems that allow only one instance of an ID to be active at one timerely on a "sign-off" notification to tell when the ID can be used again for "sign-on". Because the web server 4 does not receive a "sign-off,-, it is assumed that any new user is allowed to "sign-on" with that ID, but all others that are currently using that ID will now be denied further access,' until they "sign-on" again (which involves closing down the browser, then restarting it again). Furthermore, step d. is S included to keep a user from locking himself out of his own ID if he happens to use browsers from two different locations, such as home and office.
Thus, the following scenarios apply:
Scenario 1:
User 1 signs on to the web server 4 at his office. The CGI marks this browser/user ID combination as the current user.
At 5:00PM, he goes home, without closing down his browser.
At 5:45PM he signs on from his home computer.
The CGTL now marks this browser/user ID as the current user.
At 10:OOPM, he goes to bed, without turning off his browser.
At 8: OOPLM the next day, he arrives at work, and tries to access the web server 4 again.
Because his 10:00PM cookie is now "stale,,, the CGI marks the office browser/user ID as the 2S current user.
Scenario 2:
User 1 signs. on to the web server 4 at her.,, office. The CGI' marks this browser/user ID combination as the current user.
She then goes to the desk of Use.- 2, and shows User 2 "this new web service", using her own user ID and password to sign on to the web server 4. The CGI marks User 2 1 s browser as the current user of User 1's ID.
Af ter a few minutes, User 1 returns to her original computer, to f ind that the CGI is Q denying her access. User 2 has her locked out by using her ID.
This user verification system is particularly well suited in information delivery systems where a fee is charged per ID/password.
Web Server: The web server -'4 uses a single CGI program that handles all the types of requests that a user makes to the web server 4. In the representative embodiment, the types of requests that the CGI program can handle are:
Return a list of reports recently received at the repository server 2.
Reformat the current list of reports.
Present a form that allows the user to specify criteria for reports the user wants to access.
Return a list of reports matching the criteria in the form mentioned above.
Return a list of reports summarized by report contributor.
Return a list of reports authored by a specific contributor.
These requests are handled similarly, except for the request for the form that the user fills in to specify criteria for reports that the user wants to access. Except for the third request listed above, a query is formulated (whose
parameters are determined by the run- time arguments given to the CGI from the original HTTP request from the investor) by the web server 4 and sent to the appropriate database 11, 13. A result set (a list of reports) is returned and stored in memory. The CGI then opens a HTML template form that comprises RAL (research access language) elements, fills in each RAL element with data from the result set and sends the contents of the template to the Internet browser through Q the Web Server 4. (In the case of the reports that "are summarized by contributor, the CGI simply 'condenses the list of headlines internally to summary form, before using the template.) When the output from the CGI is S received at the investor's Internet browser, the browser forms it into a "page,, of information, along with action buttons that the investor can select to initiate other requests.
The request to present a "report query form" (the third request listed above) calls for the CGI to make two queries from the relational database 11. The first query is for a list of all contributors whose reports this investor has authorization to access. The result set of this query is used to fill a list box, from which the investor is ex- oected to pick the particular contributors whose reports the investor would like to access. The second query is for a list of all industries. The result-set of this query is used to fill a list box, from which the investor is expected to pick the particular industries that the investor is interested in. These list: boxes are defined in the HTML template with RAL elements that are appropriate to this particular user request.
When a query is made, the web server 2 selects the appropriate database to which the query is first routed. In summary, if the query involves text matching (e.5,,, a full text search) within reports, the query is passed to the full text database 13. If the query does not involve text matching within reports, the query is passed to the relational database 11.
In the representative embodiment, each database comprises a number of database servers networked together. (for example, database server 13 comprises a network of database servers.) The database servers that are 0 available to the CGI are listed in the WEBPUBL.INI file on the web server 4. When satisfying a n6n-text matching query, the CGI will attempt to use an SQL type server (e.g., 11) first. If that database server is not available, the CGI will automatically switch to the next available SQL database server. (If all SQL database servers are not available, then the query will be passed on to f ul 1 text database server (e.g. 13) - when satisfying a text matching query, the CGI will attempt to use an full text database server (e.g. 13). Again, if that server is not available, then its backup will be tried, and so on, until either a server can satisfy the query, or all servers have been found to be down. In addition to this automatic backup system, the CGI is practices semi-random selection of servers in an effort to balance the load on the servers. This means that the order that servers are tried is not always the same.
The HTML template forms that the CGI uses rely on forms that are part of HTML. This allows the users to select buttons on the pages to submit requests. Each page may have several buttons, and the names of the buttons (the actual visible text in them) are used in the CGI to identify which button the user selected, and therefore, 2S which action to perform. Parameters for a query are taken from other form constructs, such as text fields, list boxes, and combo boxes. When a form does not actively show a parameter value, but it would be convenient for the CGI to maintain its value for the next user request, the values are stored as "hidden" fields in the form. (A hidden field is a form construct defined in
HTML for just this'purpose.) This allows the parameters of a query to be stored in a page that shows the results of a query, so that they can then be used again as starting values when the user requests the report query form.
Authorization: In the representative embodiment, each user has authorization to access a subset of the information stored at the repository server 2. The contributor determines who has access to each report.
For example, an investment: bank may designate that one of its reporcs can be accessed only by its employees and certain investors (e - g its customers) Another report:
may be designated as accessible by employees only. A r-hird report may be released for general distribution to all who wish to access that report.
Every documenc contributed by a contributor is idenr-ified by a "contributor -TD". Furthermore the document is assigned by the contribucor to one or many "document groups" owned by the contributor. (DocumenLs usually belong to one document group.) The authorization information links an investor to a list of document groups. Each investor may be permitted to access documents in one, some or all document groups.
The repository server 2 constantly maintains an up to date list of all the report groups available along with the reports in the relational database 11. This list is updated in real time af ter a report is added, and completely refreshed daily (e.g., after report removal of expired reports).
To submit a query, an investor must be identified by the repository server 2. As the investor's credential are checked (see above), the authorization information is retrieved by the repository server 2. This authorization information contains a list of report groups the investor is permitted to access.
Optimizations: Two types of optimizations which are included for illustrative purposes are performed by repository server 2. The first is a simplification of the authorization restriction. The second is an optiona! optimization performed when the result set has to be sorted; it is aimed at reducing the perceived response time for the first answers to a query. 5 one of the characteristics of the architecture of the present invention is that each query submitted to a database 11, 13 is submitted as a structure description, rather than a fully formed SQL statement. The actual SQL lo statement is built by the database server 11, 13 itself. Thus, the optimizations can take place on the raw query definition (i.e., a structure definition) before executing the query. This allows for more powerful query oiDtimization, and immediate query definition analysis to select the proper mechanism to execute it.
1. optimization of the authorization restriction in query definition, the investor can restrict the query to a subset of the contributors the investor has access to. This feature is used to implement queries like "What's new today from XYZII and "All reports relating to automobiles from PQR."
The purpose of the authorization optimizer is to build the least expensive (with respect to execution time) selection clause, which will restrict the investor's query to the database subset the investor is allowed to access.
The authorization optimizer uses this database content information, combined with the investor's accessible tributor restriction in the groups, as well as the c= query, to build the restriction clause using the following method.
The repository server 2 builds two lists of groups:
a) the list of groups the investor has requested and has access to.
b) the list of groups the investor has requesr-ed but doesn't have access to Based on the number of elements in these two lists the authorization optimizer will build the proper restriction clause.
The following pseudo code describes the actual code used to implement this algorithm:
for (all the groups in the investor's allowed group liso do begin if (group is in the query contributor restriction) and group is in database) C, then add group to the allowed list end groups in the database) do for (all the begin C> if (group is in the query's contributor restriction) and group is not in the investor's allowed list) then add group to the disallowed list end if (allowed groups list is empty) then deny request else if (disallowed groups list is empty) 0 then no restriction else if (decisionFunction (allowed list, disallowed list)) then restrict to groups in allowed list 0 else restrict to groups not in disallowed list 0 The I'decisionFunction" selects the shorter of the tw6 lists, namely, allowed list and disallowed list.
This optimization is more efficient when the database's content is close from the inv estor authorization, since it works by trimming the unnecessary restrictions for groups without reports in the database.
To improve the efficiency of this optimization when the number of groups in the database grows, the records could be dispatched to different tables based on groups and the same optimization algorithm could be used to select the approp.riace table and generate a dif-Eeren restriction 5 clause for every table targeted.
2. Optimization of sorted queries The purpose of the sorted queries opLimizer is to provide the investor with a fast answer even when the number of elements to sort is substantial.
Unlike other applications used in memory sorting, database sorting can rely on a buffer being swapped in. and out to disk from the main memory, when the number of items to sort becomes significant, these 1/0 operation can consume a lot of time. When an investor submits a query via the Internet, the repository server 2 via the web server 4 returns the first hundred rows by default, the most recent reports being displayed first. The actual query result may contain thousand of reports. Thus, to display the hundred most recent reports, the database has to sort the whole result set before returning any answer.
In order to provide the investor with a quick answer, the sorted queries optimizer will try to run multiple queries, each for a smaller subset of the query. If the query has to be sorted by the report's date, the sorted queries optimizer divides the requested time period of the query definition into multiple chunks and executes the same query restricted to every chunk. Accordingly, the sorted queries optimizer does not disturb the sorting order.
Based upon tests of real data sets, it was found that it was more efficient to perform only two queries, rather than a lot of them. The first query is performed on the first i0th of the time period, the second one on the remainder period. For some typical queries, the second subquery execution is unnecessary since the-first query had already returned the number of rows requested by the 5 investor.
For database 13, the retrieving of a count is orders of magnitude faster than retrieving the full result set. The present invention takes advantage of this lo characteristic to give an immediate feedback to the investor. As soon as a query is submitted, the present invention performs a count and sends this information to the web server 4. The web server 4 can take advantage of this feature to return that information to the Internet browser by flushing it's internal buffers. That way, even when the retrieval of the result set takes tens of seconds, the investor gets some feedback.in seconds.
ideally, the sorted queries optimizer is used only for sorted queries and when the number of rows is above a given threshold. The present invention uses the result of the coun to trigger the sorted query optimization.
The following pseudo code describes the code used to implement the sorted queries optimizer:
Retrieve the count if (Query is sorted by a time) and (count > = threshold) then becin if (query definition contains a time range) then get the time range from the query definition else use an appropriate default value add the restriction for 1/10'hof the time range retrieve the first rows rows-still-to-fetch = rows-requested - rows_already_fetched if (rows-still-to-fetch > 0) begin add the restriCEion for remainder of the time range L t 31.
retrieve rows still 10 fetC11 rOWS e lid end This opt:imizat-ion significantly improves the response time when the time to perform the addicional query is negligible compared to the time necessary to sort the full set. 10 The communication delay inherent in the connection between the Internet browser and the web ser-er 4 may also introduce additional delays hiding some of the optimizatioh benefits. 15 Templates: According to the present invention, the web server 4 executes a research access program. The research access program provides a mechanism that enables an investor to access the information in the databases 11, 13. The research access program also implemenr-s an 20 Internet CGI,.which accepts. input -parameters from-HTML forms, and then using templates forms, generates HTML pages comprising information retrieved from the databases 11, 13. The template forms-are written in a novel computer language, called herein a "research access 25 language" (or RAL) that describes how to integrate the information retrieved from the databases 11, 13 into this form. The template forms include RAL elements, as discussed in detail below. 30 The present invention allows investors to submit queries and receive in response thereto a list of reports that satisfy the queries. The queries are constructed from one or more search parameters, including: which contributing company published the report; which stock symbols figure prominently in the report; when the report was published; what industries are featured in the report; and keyword search parameters.
An investor may enter search parameters at a user computer 6, 8 via a web page provided by the web server 4. When the investor selects the "submit" button on the web page, the search parameters are forwarded by the 5 Internet browser to the web server 4. The search parameters are used to form a query. The query is submitted to the appropriate database 11, 13 and a list of matching documents is generated. This list is formatted on the web server 4 into HTML form, and sent: to the investor at the user computer 6, 8, where the investor's Internet browser displays the list to the investor.
The input to the research access program of the present is invention comes from HTML forms completed by investors.
The fields that can be searched on for document queries (and the expected values of such fields) include:
date: A date range from "today" backwards, matching a document's official. release date. Possible values include:
0 Today 1 Last 2 Days 2 ThisWeek 3 Last 7 Days 5 Last 14 Days 7 This Month 8 Last 30 Days All Dates 12 Last 60 Days 13 Last 90 Days ticker: A field for ticker symbols.
query: A field for "free text" for searches of thle' document text. Logical expressions can be used, including the ampersand (1&1) for a logical land', and the pipe character P I ') for a logical or,. Parenthesis can be used for grouping expressions, and double quotes can be used to group words into phrases. All free text searches are not case sensitive.
For example:
0 microsoft Find documents with Imicrosoft, in their text. ibm & microsoft Find documents with libm- and 5 'microsoft' in their tex.
ibm I microsoft Find documents with either 'ibm, or Imicrosoft, in their text.
ibm & Find documents with 'ibm', microsoft and either 'microsoft- or I apple) 'apple' in their text.
Isearnings report" Find documents with the phrase 'earnings report' in their text.
contributors: A field for a comma separated list of contributor ID's. industries: A field for a comma separated list of industry ID's.
There are a number of options for displaying information to an investor. Some of these oiDtions are based on technical limitations (such as line speed), while others are based on the preferences of the investor (e.g., tabular output, prose, etc.). In order to react quickly to changes in disp.lay requirements, the research access program of the present invention utilizes template forms to format HTML pages comprising search results.
According to the present invention, information retrieved from the databases 11, 13 is placed in HTML page format according to changeable template forms for said HTML pages.
Thus, input (included in the HTML forms COMDleted by investor) to the research access program of the present invention from an investor can include view mode parameters relating to the format in which the investor wishes to receive the search results and other information. By supplying view mode parameters, the investor can indicate to the web server 4 the desired format of information, including how many records of information aredisplayed. View mode parameters (and expected values) include:
FT: Form Type. ExDected values are ILI-for Ilis format', IT' for 'table formar-1, and IDI for double line format'.
viewmode: This field indicates whether all records that are returned by a query should be displayed (within reason -- in the reDresentative embodiment, there is a disQlay limit of 1000 records), or whether the number of records display should be limited to a predetermined number. If the Iviewmode' value is set to all', then all records will be displayed. Otherwise, the number of records displayed will be limited to the predetermined number.
1,5 To submit a query, the user completes the fields discussed above and then selects a "submit" button. When an investor submits a query, the name and value of" the HTML form 'submit' button selected are treated as input..In the reDresentative embodiment, if the following
2 0 strings appear in the 'name, of the submit button, they are treated in the following manner:
submit: Make a query according to the parameters listed above.
bboard: Same as submit, except that the query formulated includes the requirement that only documents recently received at the repository server 2, e.g. since midnight, be returned.
long: Change the view mode to a double line format.
short: Change the view mode to a list format.
table: Change the view mode to a table format.
summary: Same as submit, but also requests generation of a summary list, breaking down the number of documents that match the query by submitting contributor, and the document type (research document, or morning call note) In addition, generates stored HTML files for each contributor in the summary, with one listing of the individual research documents, and another for the individual morning call notes. In the summary list, generates links to the stored HTML files.' notes: Same as summary.
all: Change the view mode to view all documents.
last: Change the view mode to view the 100 most recent documents.
query: Generate a query form for the user.
count only: Display the number of documents that match the query that matches the current parameters.
company search: Generate a list of companies (named symbols), and place the list in a form from which the user can choose a company to perform a search upon. choose symbol: Generate a query form for the user, presetting the ticker input item to the value selected from a symbol list.
The program output, of course, depends upon the input including which 'submit' button was selected by the user. The user's choice of a submit button determines which template will be chosen for output.
Additionally, templates may be preset for a user or a group of users. Thus, all users from a particular company or geographic area may be assigned one group of templates and all users from another company or geographic area may be assigned another group of templates.
Once a template file is opened, the characters in it are passed directly through to standard output (the normal CGI output channel), until an RAL element is encountered. In that case, the RAL element is processed according to the rules set forth below, and the output from the RAL element is also sent to standard output, inserted into the stream of characters in the template.
The following are examples of templates that may be used:
resultrl.tpl: List form output for a query. resultrd.tpl: Double line output for a query. resultrt.tpl: Table form output for a query. resultcl. tpl List form output for a query, broken down 5 by contributor and document type during a summary. resultcd.tpl Double line output for a query, broken down by connibutor and document type during a summary.
resultct.tpl Table form output for a query, broken down by contributor and document type during a summary.
resultq.tpl Query form.
resultx.tpl Query count.
resulti.tpl Symbol Guide form.
resultt.tpl SLandard HTTP header prepended to each of these templates.
bboardrl.tpl: List form output for a bulletin board.
hboardrd.tpl: Double line output for a bulletin board.
hboardrt.tpl: Table form output for a bulletin board.
bboardcl.tpl List form output for a bulletin board, broken down by contributor and document type during a summary. bboardcd.tpl Double line output for a bulletin board, 25 broken down by contributor and document type during a summary. bboardct. tpl Table form output for a bulletin board, broken down by contributor and document type durin a summary. 30 If a query is submitted with no parameters filled in, the query is termed a bulletin board query and requests the most recently available documents on all subjects.
Research Access Language The following is a description of the RAL of the present invention. RAL elements begin with a start token, finish with an end token, and contain attributes in between. The start token is followed by a "white space" character. Attributes are indicated by the name of the attribute, followed by an equals sign ('1=11), followed by the value S of the attribute. An attribute name consists of consecutive alphabetic characters. An attribute value consists of consecutive non-white space characters, unless it is enclosed by double quotes, in which case irconsists of all characters enclosed in a pair of double quotes. An end token contained within a non-quoted attribute value will truncate the attribute value, and the languag6 element. The following is a syntax description of an RAL element:
start-token "(nix" <white-space> white-space (any ASCII character value between I and 32, inclusive) end-token T attribute:= <attribute-narne> "=" <aEtribute-value> attribute-narne:= "end" "name" I "true" I "width" I "ali-n" I "start" I "false" "enip(y' "niatch" "forniat" I "select" I "quotes" attribute-value:= <double-quotes> <any-characEers> <double-quo(es> <any- noll white-charac(ers (except end-token) > Evamples:
(nix nanie=lieadline ali-n=left widtli=50) (nix start= documents) (nix narne = synopsis niatch = I true = Yes false Attributp- Name alicr The' 'align' attribute specifies the alignment of the output from the current element, within the width indicated by the width' attribute in the element. Possible values: left (default) center right See also: width emip t The empty, attribute specifies what should be displayed as output for the current element, if the evaluated output for the element (before padding or alignment) is an empty string. This attribute is different from others, in that it remains in effect for all following language elements, until its value is changed.
Possible values:
(Any string. Use "" to indicate an empty string.) end The lend, attribute marks the end of a loop. The attribute value indicates which type of loop the currentelement marks the end of.
is Possible values: document contributorlist industrylist symbollist see also: starr- false The 'false' attribute specifies a string value to be displayed as output for the current element if the evaluated value for the 'name' attribute does NOT match the value of the 'match, attribute. This string may also use the "is' feature described under 'format' Possible values: 30 (Any string. Use "" to indicate an empty string.) See also: match, true, format f o=at The 'format' attribute specifies simple output formatting for output of the current element. Its format is.the same as a C language printfo format string, but allows only string formatting (ks), and only one occurrence of that within the format string. The evaluated value of the element, as a string, is used as the value to fill the '%sl in the formatting string. Some examples are: 5 E=aLsLrin,o, Elmnent Value 0-utpuLResult "%S" "ABC Corp. "ABC Corp- % 15s" "ABC Corp." "ABC Corp.
*"%-15s" "ABC Corp.".1 ABC Corp."
" % 5.5 s" "ABC Corp." "ABC C" " %s Documents" "ABC Corp." "ABC Corp. Documencs" Possible values:
(Any valid C printf formatting string.) is See also:
align, width natch The 'match' attribute specifies a value which the RAL processor will compare to the evaluated result from the name' attribute. If the two values match exactly, then the output from the current element will be the string specified by the 'true' attribute, otherwise the output will be the string specified by the 'false, attribute.
Some examples are:
Match Twe FaLse Fiempnr VnJue Qutpjut "Synopsis" Synopsis".1. "Synopsis" Possible -values:
(Any valid string. Use for an empty string.) See Also:
true, false, name 35 na.me The name, attribute specifies a data field to be used as
0 the output -for the current element. The data field name given as the value for this attribute is the name of a field in a research document description, a contributor description., an industry description, or a stock symbol description.. A list of data fields supported is given in the "Data Fields" sections below. The field name can also specify any CGI input field (for CGI programs using RAL) by prepending an under9core character to the input field name, or it can specify any INI file entry or environment variable by prepending a dollar sign to the entry/variable name. Possible values: (Any valid data field name, or _cgi -input -name, or $ini - entry- name, or $environment -variable -name.)
See also: match, Data Fields quotes The quotes, attribute indicates whether output from the current element should be surrounded by double quotes.
If this attribute is set to 11111, the 'width, and align, attributes are ignored. Possible values: 11111 to surround output by quotes 25 11011 to not surround output by quotes (default) start The start' attribute indicates the beginning point of a loop, with each iteration of the loop enumerating the data items specified by the value of this attribute. See the section "Data Enumeration" below for details. Possible values: documents contributorlist. 35 industrylist symbollist See also:
0 end, Data Enumeration true The.' true' attribute specifies a string value to be displayed as output for the current element if the evaluated value for the 'name' attribute matches the value of the match' attribute. This string may also use the -.sl feature described iinder format'. Possible values:
(Any string. Use "" to indicate an emoty string.) See also:
match,'false, format width The width' attribute specifies a number which gives the desired width, in characters, of the output for the current element. If the currently. evaluated output is shorter than the 'width, value, then the output is padded with spaces on the left, right, or both,-according to the value of the 'align' attribute. If the output is longer than the 'width, attribute, the output is truncated on the right, and the last three characters are replaced with periods ( I... 1) to indicate a truncated value. Possible values: 25 (Any valid integer.) See also: align Data Enumeratio The RAL attributes 'start' and lend, are used to mark elements that are to be repeated during the enumeration of data objects. For example, Imx start=documents)(mx name=headline).(mx end=documents) would cause RAL to enumerate all documents that match the current query, outputting the headline of each one. (By placing the lend, element on the next line, it also il'o causes the headlines to be separated by an end-of-line character). The available enumerations are listed below. All enumeracions are filtered so as only to include documents the user that is making the enumeration is authorized to access.That is, not all users see the same results when making enumerations, according to their level of authorization.
documents The 'documents' enumeration loops through the result set of a query on the database of research documents. In the current implementation, the input parameters to the query are taken from CGI input items from an HTML page. They are:
daterange: An integer from 0 to 12 specifying a date range for the release date of a document. The possible -values are:
0 Today 1 Last 2 Days 2 ThisWeek 3 Last 7 Days Last 14 Days 7 This Month 8 Last 30 Days 10 All Dates 12 Last 60 Days 13 Last 90 Days ticker: A field for ticker symbols.
query: A field for "free text" for searches of the document text. Logical expressions can be used.
contributors: A list of contributor ID numbers which identify the contributors.
industries: A list of industry ID numbers relating to the document.
The following fields are available within a Iddcuments, enumeration, listed with the data they output:
Analysts Names of the analysts that compiled the document.
AnalystMs Numeric ID's of the analysts that compiled the document.
ByttCount Size of the document (in PDF form) in kilobytes or nie-abvies. Contributor Name of the company that compiled tile document. ContributorlD Numeric ID of the company that compiled the document.
DocID The internal system document ID number.
DocType 'R' for a research document; 'M' for a morning call note, 'N'. for a news document.
Headline The headline of the document. The systeni of the represen(ative enibodinieTill also surrounds the output from a element that displays this field with an
HTML "anchor" to a CGI that downloads tile PDF file for the document, or generates an HTML page for documents with no PDF form.
PageCount The number of pages in the document.
ReleaseDatc Tile official release date of the document.
Relevance A number from 0 to 1000 that indicates the relevance of the document to tile free text that was used in the query. Tile higher the number, the more matches on the free text.
SubmitDatc The date the document was submitted by the contributing company to the repository server 2.
Symbols A list of ticker symbols that the contributor listed as relevant in Elie document.
Synopsis A " I "P'O" flag that indicates whether a synopsis is available for tile document.
By default, tile value "Yes" is output if the synopsis is available, and "" is output otherwise. The representative embodiment also surrounds the output from a element that displays this field with an HTML "anchor" to a CGI that creates an HTML page with the actual synopsis text.
The following fields are available outside a 'documents, enumeration, since they are summary information or status information. Their values depend on the same queryused within a documents, enumeration:
ChangeViewMode Generates text that can be used within a button to change the mode used to display documents. When the current view mode is set to show-all documents, this data field generates "View Last ##41', where ### is equivalent to the "Maximum" data field. When the current view mode is not set to show all documents, this data f ield generates "View All where ### is equivalent to the "Total" data field. This text can be used as the value of a submit' button in HTML, and a CGI can Derform the appropriate action to change display modes.
ContributorFilter Displays the name of the current contributor being used to filter documents. ContributorsText Displays the names of all contributors whose codes appear in the -contributors field. Count
Displays the total number of documents actually retrieved by a query, as opposed the number of documents that actually match the query. When the view mode is set to show all documents, this field is equivalent to the "Total" data field. otherwise, it is equivalent to the "Maximum" data field. CountFilter
Dsplays the number of documents that mat ch the current document type and contributor filter. DocsShown Generates variable text, depending on the view mode (all documents, or the limited (100) set) If the view mode is set to return all documents, this data field generates the text "### Entries", where ### is equivalent to the "Count" data field. If the view mode is not set to view all entries, the data field generates the text "Last ### of Entries", where ### is again equivalent to the "Count" data field, and is equivalent to'he "Total" data field. DocTypeFilter
Generates the text "Research", "Morning Call Notes", or "News", depending on the current value of the document type filter.
IndustriesText Displays the names of all industries whose codes appear in the - industries field.
0.
Maximui This data field is the limit on the number of documents to be retrieved when the view mode is not set to.'show all documents. In the representative embodiment,
S this value is 100 by default, or the value specified in the "MaxRows" entry in WEBPUBL.INI. MaxRows If the view mode is see to show all documents, this data field is equivalent to the "Total" field.
otherwise, it is equivalent to the "Maximum" field.
MorningNotes This da'ta field is the number of morning call notes attributed to the current contributor specified in the contributor filter.
News This data field is the number of news stories attributed to the current contributor specified in the contributor filter.
Research This data field is the number of research documents attributed to the current contributor specified in the contributor filter.
Total This data field is the total number of documents that match the current query parameters, regardless of view mode, contributor filter, or document type filter. ViewMode This data field generates "all" if the current view mode is set to view all documents that match a query.
This. field generates "last" if the current view mode is set to view only the last N documents that match a query, where N is equivalent to the "Maximum" data field.
contx-ibutors The 'contributors, enumerations is the same as a documents' enumeration, except that the documents are grouped by their contributors. The only fields that can
Q_ be displayed are the -contributor names, and the number of documents in the research and morning notes categories. This enumeration is used primarily for presenting document summaries by contributor to the users. S The following fields are available within a. 'documents, enumeration, listed with the data they output: Contributor
Names of the contributor in a group.
MorningNotes The number of morning notes submitted by the contributor. Research The number of research documents submitted by the contributor.
con L-ribu torl i s t:
The 'contributorlist' enumeration loops through the list of contributors from whom documents are available.. This list is not based upon any query parameters -- if a user is entitled to see the documents of a particular contributor, the contributor's name is returned in the result set.
The following data fields are available within a contributorlist' enumeration: ContributorID An integer that identifies a contributor uniquely. ContributorName, or Contributor 30 The name of the contributor. The following data fields are available after a 'contributorlist, enumeration. ContributorCount The total number of contributors in the.
3S 'contributorlist, enumeration.
industz-ylist 0, The I industrylist, enumeration loops through the list of industries about which document.s may be compiled. There are no query parameters for the industry list. The following data fields are available within a lindustrylist' enumeration.
IndustryID An integer that identifies an industry uniquely. IndustryName The name of the industry.
sy7nbollist The symbol list' enumeration loops through all ticker symbols/company names that match a given input string. In the representative embodiment, the input string is taken from the CGI input item named 'company,. If a company name contains the input string, the ticker symbol/company name is included in the result set for enumeration.
The following data fields are available within a
Isymbollist' enumeration. Symbol= The stock ticker symbol recognized for a company on the stock market exchange where it trades.
SymbolNa3ne The name of the company.
P-rogr-am Control RAL allows logical control over its output. The -i:f, -endif, and -defer allow a template to make decisions about output based on run time values of -CGI input variables, environment or INI variables, and.the values of data fields from enumerations. If a -if element evaluates to FALSE,. then.all -text and elements between the starting -if element and its terminating -endif element will not be passed through to output. If a -defer element is used inside a regular RAL element, then the rest of the e lement is not evaluated, and is simoly passed through to output, without the -defer element. This allows a template to evaluate some RAL elements, and leave. others to be evaluated later, if the output is used 5 as a template itself.
-if and -ejidif Usage (nix -if <expression> (nix -endif) where expression <value> <operator> <value> value <string> <number> I <variable> is operator < > ≤ I ≥ strinc <double-quote> [<any-characters>]+ <double-quote> number <di-it> variable S) < alphabetic character >_ I < alphanunicric characters > + Only one expression is allowed. A variable that does not evaluate to a known value will be treated as if it were a string. If a variable is preceded by an underscore its value is taken from a CGI input variable with that name, minus the underscore. If a variable is preceded by a dollar sign (11$11), its value is taken from the environment variable or from the program's INI entry which matches the variable name, minus the dollar sign.
The following example shows how the -if element can be used to display some text and values only if there are actually some morning notes in the result of the, query. (mx -if mornin- notes 01 There are (mx name= morn ingnotes) -- Click the "AM Notes" button to access 35 them. < BR > (mx -endif) The following example shows how a CGI input variable can influence the output. In this example, if the "contributors" CGI form variable is not empty, then some text will be output, along with a-built-in field that
S displays the names of all the contributors whose ID codes are in the "contributors" CGI form variable.
(nix -if -contributors!= "") Query on contributors (nix narne=contributorstext) f nix -endif) -defer Usage The -defer element is simply a modifier for other elements. It keeps the RAL from evaluating an element immediately, and outputs the element as if it were plain text, except it leaves the -defer out. For example:
<option value= 100 (nix -defer nanic=-coiltributorsiiiatcli=100 truc=selecied)>Selection hem 100 will output <opdonvalue=]GO (nix nanie =-contributors niatch= 100 truc=selectedl > Selection 11C111 100 the first time it is processed, and will this if that output is processed:
<option value= 100 selectcd>Selection Itern 100 (This may leave the "selected" out, depending on the- value of -contributors.) One can haveas many -defers as desired in an element they do accumulate. That is, having three -defers in;an element will cause it to defer evaluation until the fourth processing.
An Example Use of RAL The following is an example of RAL used within an HTML (62- file. A web CGI program that processes RAL can -use this example file as a template, and fill in the RAL elements with the derived values of a query. This HTML has been simplified for the purpose of explanation, - with comment-s 5 in italics.
<HTML> <HEAD> <TITLE> Bulletin Board < [TITLE > </HEAD> <BODY> h2 > < i > Bulletin Board < /h2 > < /i > forni method="POST" action= "/CGIBIN/result.exe" > input type= "submit" name= "subaction" value= "Refresh-> <input type= "submit" name= "subaction" value="Query"> < input type =- "submit" name = "subaction" value ="Suniniary- > < input type = "submit" name = " subaction" value = "AM Notes" > Compare file total matching records to the maxinium allowed ill the display. If there are 25 more, show file "change viewing inode" button. (nix -if total > maximum) < input type= "submit" name= "subaction" value= "(mx name= clianceviewniode)" > nix -endif) < input cype="submit" name= "subaction" value="Long Form" > < input type= "hidden" name = "current" value= "bboard"> <br > Display the total number of documents that matched, and how many will be displayed in this list. < b > (nix name = docsshown) < /b > < br > < /form > <PRE> < B > Submit Company Pgs Size Symbol Syn Headline </B> <HR> This part is a document enumeration. The enumeration shows the fields named 'updatedate', 'contributor', 'pagecount', 'bylecount', 'symbols', 'synopsis', and 'headline'.
Around the IsYnopsis'field, there is a use of the -if element, which decides whether to output a hypertext links to the synopsis. There is no -if eletnentfor the < /I >, because all extra one doesn't hurt inost browsers.
(Thefollowing lines are split tip with newlines to njake it easier to read r7inning this HTlWL, it will not give the desired results.) (nix start = documents) fnix name=updatedate widdl=7) fmx name =contributor width=201 (nix nanie=pagecounE width=3 alian=righill (nix nanie=bytecounE width=4 aligii=riohc) (nix name = symbols widdi = 10) (nix -if synopsis = = 1) <A HREF="result.exe?subaction= (nix name=synfile)"> (nix -endif) nix name = synopsis width = 3) < /A > < A HR EF = " result. exe?subaction = (nix name = doc file) > (nix nanie headl ine < /A > (nix end= documents) </PRE> <b> Display th e final counts.
(nix name = research) Research Documents < br > (nix nam e = morning notes) Morning Notes (rnx -if morningnores > 0) -- Click the "AM Notes" button to access them.
(nix -ejidifl <br> </b> If there it-ere niore than a screenfid of headlines displayed. create anotherfonn and display file control buttons ogain, justfor the user's convenience.
f nix -if research > 17) <hr> <form method="POST" action ="/CGlBlN/resulE.exe" > < input type = "submit" name = "subaction" value = "Refresh" > < input type = "submit" name = "subaction" value = "Query > < input type = "submit" name = "subaction" value = "Summary" > < input type = "submit" name = "subaction" value = "AM Notes" > (nix -if total > maximum) < input type= "submit" name= 1. subaction" value="(mx name =chan- eviewrnode) > (nix -endif) < input type = "submit" name = "subaction" value = "Long Form' > <input. type="hidden" name= "current" value="bboard"> < /form > (mx -endif) </BODY> </HTML> It wi.11 be appreciated that the templates and research access program described above are of general application, and can easily be modified to be used in many applications and fields. Accordingly, the templates and research access language should be understood as applicable to applications and fields other than for the distribution of research reports.
Step-by-Step Examples The following are three step-by-step examples illustrating some of the principles discussed above. The is first example describes what happens when the user first "logs in" from a non-secure "home pages" on the WWW, and receives a Bulletin Board display. The second example shows what happens when the user selects the "Queryll button that is on the Bulletin Board display from the previous example. The third example illustrates wharhappens when the user makes a query.
According to the representative embodiment of the present invention, there are a number of predetermined types of information displays available. A bulletin board display outputs a list of the headlines of reports that have recently been received by the repository server 2. (In these examples, "recently received" is defined to mean reports that have been received that day, e.g., siryc"e midnight on today Is date. The bulletin board display can include the time of submission of the report by the contributor, the identity of the contributor, the number of pages and size of the report, ticket symbols related to the report, whether a synopsis is available and the headline, all displayed one line per report. A query results display comprises the same fields of information, but for reports that satisfy a user's query. Each of the
1.
P above two types of output can be displayed in other formats, e.g., in long form which includes a two' or more line output for each report listing the headline, the time of submission of the report by the contributor, the identity of the contributor (company), the name (s) of the authors of the report, the number of pages and size of the report, ticket symbols related to the report, whether a synopsis is available. A'summary display outputs a three column table, each row listing a contributor, the number of research documents at the repository server 2 available for that user from that contributor and the number of morning notes at the repository server 2 available for that user from that contributor.
Example 1: Logging In, and Getting a Bulletin Board If a user has accessed an initial non-secure home page of the present invention, the user can select a link to "Log In". The actual link is to an address II/SCGIBIN/result.exell, where "result. exell. is- the name of the CGI program that generates response pages to user actions. The directory /SCGIBIN is actually mapped on the non-secure web server to the directory /CGIBIN on the secure web server 4. This means that home pages are handled by the non-secure server, but actual access to reports is handled by the secure web server 4. When the secure web server 4 receives the request to run "result.exe", the web server 4 first checks the request to ensure that the Internet browser making the request is authorized to access the web server 4. If the Internet browser is not authorized, the web server 4 prompts the Internet browser to ask the user, via a dialog box, for a valid user ID and password.
In this example, the user enters the name "george@1984", and the password "wombat" and then selects OK. The web server 4 now verifies that the user is authorized. This is done by passing control to a subroutine named llmxp-autho " which consults the relational database, s 11 list of valid users and their passwords. (In this example, the relational database 11 is an SQL server.
If the given user ID and password matches a database entry, the subroutine sets up the environment variables HTTP-CID as "1984" to represent the company ID of the user (taken from the 11@1984" part of his ID), HTTP UID as 11209611 to represent the user's internal ID (taken -from the SQL sever's records), and HTTP-MXP as "wombat" to represent the user's password. The subroutine then returns a REQ PROCEED value, and the web server 4 knows it may then proceed handling the user's request to run "result.exe".
The web server 4 next executes the program "result.exell, with no additional arguments, because none were sDecified in the hypertext link to it, and because the page that the request was made from was not an HTML form, which would have named data fields the---user could fill in to modify the request. First, "result.exell verifies that the user is not attempting access with the same ID that another user is using. So "result.exe" retrieves the value of the environment variable 11HTTP COOKIE" which is provided by the web server 4 (from the HTTP "Cookie" value in the request from the Internet browser).
"result.exe" attempts to find a value in the cookie named I'mxauth". Since, in this example, this is the first time this user/browser has "logged in", the I'mxauth" value in the cookie has not been set, so "result.exell grants Ehis user access, 'generates an authorization string-for this user, stores the string where it can find it later, and outputs a cookie value to the web server 4 that the server will send back to the Internet browser.
The next thing "result.exe" does is to determine what type of request the user made when calling "result.exe".
Since there are no arguments to "result.exell, and there are no HTML form values, "result.exell defaults to generating a Bulletin Board, which is a list of all headlines that have newly arrived at the repository server 2 today. The program has a choice oil which type of database server to query for the list -- the SQL server 11, and the full-text search server 13. Since this request does not require any full-:text searching for, values in documents, the "re'sults.exell program chooses to contact an SQL server 11. If the connection fails for some reason, t he program will attempt to contact each backup SQL server until there are no more to connec to.
The program will then fall back to attempting to contacting the full-text search servers 13 until it finds one that is up. Failure to find any available servers will result in generation of an error message, and termination of the program.
For the sake of this example, we will assume that "result.exe" successfu.Ll-y connected to the SQL server 11.
This particular request would have no parameters, except for specifying that. only documents that have arrived on the SQL server 11 since midnight are desired. The request for the document headlines is immediately submitted to the SQL server 11, which returns its results asynchronously. This allows the SQL server 11 to begin processing the request, while "result.exell moves on to its next step. This next step is to open an HTML template that is appropriate to the output requested by the user. In this case, "result.exell is generating a simple Bulletin Board, so it is programmed to select a template named "BBOARDR?.tpl". The question mark in the name is filled in by the format that the user prefers his headlines to be displayed in. Possible formats are double line output (? = 'D'), list output (? and 3S ta ble output P = IT'). The formats that each user prefers are stored in the same place that the user's authorization code for the cookie is stored. The 11-result.exe" program goes to that storage area, looks up the preferred format for "george@1984", discovers it is and finishes its template selection by opening the file "BBOARDRL.TPL". (of course, other possible formats 5 could be specified and used.) The template file is mostly HTML, with some RAL elements mixed into it. The "result. -'exe" program will read through this template, and will immediately output any straight HTML to standard output, which the web server 4 will then send on to the Internet browser for the Internet browser to display as a page on the screen of the user's user computer 6, 8. However, the RAL elements will cause "result.exell to insert various pieces of information into this stream of output at appropriate places, formatted according to the contents of the element. Show below is an annotated 11BBOARDRL.TPL11, indicating in italics what happens at certain RAL elements. (Note that, as above, elements begin with the..........
characters "(mx".) < HTNIL > < HEAD > < TITLE > BuUelin Board /TITLE > /HEAD > <BODY BGCOLOR "MM"I > < nobr > The next line, though has an RAL element that gets its valueftoin the initialization file that "result.xe ", named "ivebpubl. ini'. The dollar sign before 'webserver" indicates that "result.e.re " should look up the JN1 entry named "webserver", and substitute its nanze here in the HTML.
< h2 > < A HREF= "{rrLx narne= $-Nvebserver) /hon1e/iniagernap1mxnet1og. rn2p" > < INIG SRC= "/horne/gif/rnxnet1og.giV BORDER= 0 ALT= "Seryice Narne" ISMAP > </A> <i> Bulletin Board </h2> </i> G9.
< /xiobr > < form method ="POST" action = "/CGIBIN/result.exc" > < nobr > < input. type= "submit" nanic= "subaction" value= "Refresh" > s < input type= "submit" name= "subaction" value= "Queryfl > < input type= "submit" nanic= "subaction" value= "Suniniary" > < input type= "submit" nanic= "subaction" value= "AM Notes" > The next lines are conditional, depending on whether the -total number of headlines returnedfroln a headline list query is greater than the 'niarinuun"number Iilot Iresult.exe" has been configured to display. When "result.exe' is coilfronled 1vith resolving the value for "total". it first checks to see if it has that vahle yet. If flot, it then goes i ' nto a ivoiting mode. while it ivaitsfor that value to arrive asynchronously froin the database server 11, 13. Once the total arrives (which it does independenih is of the actual headline records), "result. exe" proceeds with evaluating this "if" condition. If [lie evaluation is false, then all text until the next "endif " is ignored.
(mx -if total > niaximunij In this example one, the. total number of headlines returned is 143, while the value set for "inacinuan" is 100. So this condition is true, meaning the next line gets evaluated and sent out. - The element nomed "chongeviewinode " is intended to generate lext for a bution that the user can press to changefrom viewing only 100 headlines, to view all of them. So this element's volue will become 25. View All 143'.
< input type= "submit" nanic= "subaction" value= "{nix name=chanoevic,.Nmode)" > (nix -endif) < input type= "submit" nanie= "subaction" value= "Long Form" > < input type= "hidden" nanie= "current" value= "bboard" > The next line has the element "docsshown ". This evaluates to a phrase that tells the user what he is being shown. In this case, the elentent's value is "Latest 100-of 143 documents. These values depend on the total number of records, the maximunt, and whether the user presses the "change vieivmode " bution later, in which case it would show '143 documents".
< br > < font > < b > {nix name = docsshown) < /font > < /b > < br > < /nobr > < /form > < PRE > < B >Submit Company Pgs Size Symbol Syn Headline </B > ro The next line actually does not contain an), line breaks until lite < 1PRE >. but it is wrapped it herefor clarity. Thefirst elentent (inr siart=doctintents) - inarks the beginning of a loop. causing "result. exe " to repeat this section through the 'fnZ.V end= documents) " as long as there are headline records in the residtfrom the qiten-.
s All the elements in between are i. nvolved in displaying fields of the headline records.
and in nvo cases, they are used to establish hypertext links to "result. exe ' with arguments that display document synopsis and docuntent contents. Of parricular interest here, 'is that "result. exe " ivill access the headline recordi as the), arrive asynchronouslyfront the database server 11, 13, displaying fhelli 17s soon as they arrive. The entire result set of the query does not have to be presentfor display to start, thus making the display to Me user appearjaster. In fact. the server is prograinined to break the query to it up into pieces if sorting the results 1vill be a lengthy pr4qcess, as discussed above in the section titled "Optinli,, ations -. When a query is broken up, the most recent headlines are accessedfirst, which is the order is that they ore shown in this list. In addition, "result. exe " makes certain that [he data is being sent to the server (and therefore to the user) byflushing its output queue ever), 5 headlines.
<HR> {nix start =docunients) (nix nanic=updatcdate Nvidth=7) (nix nanic= contributor Nvidth=20) {ni\ nanie=pagecount Niidth=3 align=riglit) {nix nanie=bytecount %vidtli=4 2Iign=right} {nix nanie=syinbols width=10) {nix -if synopsis 1) <A HREF="result.cxc?subaction={ni.x iianic=synfile)"> (nix -endif) (nix nanie =synopsis midth = 3) </A> <A,HREF="result. exc?subaction={IIIN nanic = docfile)" > nix nanic= headline)< /A> {rnx end = docunients) < /PRE > <b> The next lines display counts of the documents, broken down by report type (e.g., here. research documents and morning notes.) Soine of the output is conditional, depending on a zero value.
(nix nanic=rese-arch} Research Docunients<br> mx narne= rnorningnotes Morning Notes mx -if niorningnotes > 0) -- Click the "AM Notes" button to access theni.
{nix -endif} <br> </b> It is convenient to have the action buttons also at the end of a long list of documents.
but it looks unprofessional to have two sets of buttons with a short list of documents. So the next section that displays buttons is identical to the button
display section above, except that it is conditional on how many research documents were actually displayed.
(nix -if researcl) > 17} < lir > <forni method= "POST" action= "/CG1131N/result.cxc" > <nobr> <input type= "submit" nanie="subaction" <input type= "submit" name="subaction" <input type= "submit" nanic="subaction" <input type="submit" nanie="subaction" {mx -if total > maximuml < input type= "submit " nanie = "subaction" (inx -endif) <input type= "submit" nanie= "subaction" value= "Refresli"> value= "Query":
vadue = " Summary" > value= "AM Notes"> value = " {nni name = changevieWmode} " > value= "Long Form" > < in put type = "hidden name current value bboard > < /nobr > < /form > {mx -endif} </BODY> < 1HTML > The-Dreceding example generates a page 100 for display on the user's Internet browser at the user's user computer 6, a as shown in Fig. 2. (The graphic listing the service name is not shown.) The page 100, displayed in bulletin board format, includes a number of action buttons 120-130, and a list of reports. The action buttons 120-130 are all used as commands to "result.exe". Each report is listed on a single line, with information about the report including the time of submission of the report by the contributor (102), the identity of the contributor (104), the number of pages (106) and size of' the report (108), ticket symbols related to the report (110), whether a synopsis is available (111) and the report's headline (112) The user can select (e.g., click on) a headline and have the complete report transferred from the repository server 2 to the user computer 6, 8. The usercan select an entry in the synopsis column and have the synopsis displayed.
A refresh button 120, if selected, cause this same report to be regenerated, e.g., to include any new reports received since the this page 100 was -generated. A quer y button 122, if selected, caises a query form to be generated, as explained in example 2 below. A summary button, if selected, causes a summary report to be generated. The summary report comprises a three column table, each row listing a contributor, the total number of research documents at the repository server 2 available for that user from that contributor and the total number of morning notes at the repository server 2 available for that user from that contributor. An AM Notes button 126, if selected, causes only morning notes to be displayed. A View All button 128, if selected, causes all headlines to be displayed, regardless of how many. A long form button 130, if selected, causes a page to be generated that includes a two lines for each report. listing the headline, the time of submission of the report by the contributor, the identity of the contributor (company), the name (s) of the authors of the report, the number of pages and size of the report, ticket symbols related to the report, whether a synopsis is available.
A summary line 132 shows the total number of documents that satisfy the query (in this case, all documents that arrived at the repository server 2 since midnight) and the total number displayed.
Example 2: Requesting a Query Form In the preceding example, the user "logged in" and was presented with a Bulletin Board. If the user wishes to make a query for documents that match certain criteria, I D he may then click the query button 122 on the Bulletin Board. This causes the Internet browser to form a request to the web server 4 to run "result.exell again, but since the button is inside an HTML form, additional information is included in the request.
First, when the request arrives at the web server 4, the ID is verified in the same ranner described in the prior example, except that the dialog box for user name and jo password is not displayed, since the Internet browser provides that information as part of the request. Once the user isverified, the web server 4 start running llresulL.exe", but with input that indicates the "Query" button was selected on the previous form.
The first thing "result.exell does is to try to verify that the user is not attempting access with the same ID that another user is us.ing. The "result.exell program retrieves the value of t,-he environment variable IIHTTP-COOKIE" which is provided by the web server 2 (as received from the HTTP "Cookie" value in the request from the. Internet browser) The "result.exell program attempts to find a value in the cookie named 11mxauth". Since this is NOT the first time this user/browser has logged in, the llmxauth" value in the cookie is set to the value "result.exell gave this user last time he was authorized.
The "result.exell program compares this value to the current authorization code it has stored for this user, and if the two do not match, it generates output that tells the user that access has been denied. If the values do match, then "result.exell proceeds.
By looking at the value for the CGI. form variable 11subaction", -the "result.exell program. can determine that 3S the user selected the query button 122 on his last request. At this point, the program selects an HTML template appropriate to this request, which is named "RESULTQ.TPL". To. service a query form, "result.exe-I.connects to the appropriate database server 10, 13 as described in example one. Once connected, it then opens the HTML template, and starts generating Output. 5 An annotated version of the "RESULTQ.TPL" template is shown below.
htnil > < head > title > Document Query < /title > /head > <body BGCOLOR = llfffffffl' > nobr > h2 > < A HREF= nanic=$webserver)/hcynic/iiiiageniap/nLxnetiog.ni2p"> <rMG SRC= 911home/gif/m.xnetlog.gir' BORDER= 0 ALT="Service Nanic" ISMAP> </A> Document Query </h2> </i> /nobr > nobr > form method = "POST" action = "/CGIBIN/result-exell > Generate the buttonsfor commands to be executedfrom thisfonn.
< input type= "submit" name="subaction" value= "Submit" > <input typc="submit" name= "subaction" value= "Count Only" > < input type="submit" name= "subaction" value= "Summary"> input type="submit" namc="subaction" value="AM Notes > input type= "submit" namc="subaction" value= "Reset"> ' input type= "submit" name= "subaction" value= "BBoard" > <input type="hidden" name= "current" value= "query"> 3S <inobr> < table > <tr valign = 11top It > <td width = 90 > < b > Symbol: < /b > < Ad > 40 The element here is evaluating the value for '-ticker". Any element name that begins with an underscore is taken fi-om values that are given to 'result. exe ' as input from th e lastform that started 'resultexe". If the Lastform had afield (text, list box, hidden, or
P othenvise) nained "ticker" (no underscore). then the web server 4 would start this instance of "result.exe" with an inputfield named "ticker" whose value would be tile value in tile "ticker"field in the lastform. If tile lastfonn had afield nonled "ticker" with a value of 'IBM", then this element will generate a default value for this input field of "IBM '. This allows "result. exe " to conie back to the pre vious state of th is query forin, if otherforms remember the value for "ticker" in hidden fields.
td > < input type = "text" name = "ticker" value = (nix nanic=-tickcr quotes = 1) </td> td Niidth = 86 > td > < input type = "submit" nanie= "subaction" value = "Symbol Guide" > < /td > Ar > <It2ble> < table > tr vali gn = "top" > td width = 90 > < b > For Period Of: < /b > < Ad > The following list box has one value preselected. due to tile "inatch " and "trite " parts in the eleynents within it. 77rese elenients evaluate the valuefor thefield "date"ftolyl tile lastforin, and if the value matches the value given for the "inatch " port. then the displayed value for th e elenent will be contents of the "true "part of the element, in this case, the word "selected". In other words, for each one of these lines, you could read "If the lastfonn's datefield motches X, then display the word 'selected"'. The special. casefor "Last 7Days",.where the inaich value is ",3", siniply nzeans that if the date value is either empty, or the number three, it is a inatch.
<td> <select name= "date"> < option value= "0" (ni-x nani e date match= 0 true= selected) >Today < option value= "I" {m;x name= date match=1 true=selected) > Last 2 days < option value="2" {rmx name= - date match=2 true=selected) >This Week < option value= "3 " {mx name= date match =,3 true= selected) >Last7days < option value="5" m;x name= date match=5 truc=selected) >Last 14 dAys <,option valuc='7' nix name= - date match=7 true=selected) >This Month < option value="8" {m:x name= - date match=8 truc=selected) > Last 30 days < option value="12" (m:( name=-date match=12truc=selected) >Last 60 Days < option valuc="13" x name=-date match= 13 true= selected) >Last90Days option valuc="10" {nix name= - date match = 10 true= selected) >AIIDates option value= "-P > - - - - - - < /select > < Ad > <Itr> /table > table >
7G.
< tr > < /tr > < /table > < table > < tr valign "top" > < td N%idtli 90 > < 1) > Keywords: < /b > < Ad > Here, a default value for this field is based on the "quen, 'field in the last forin.
< td > < input type = "text" narne = "query" size= 49 value (nix name = _query quotes=l) > </td> </tr> < /table > < table > tr valign = "top" > < td NNidth = 90 > < b > Contributors: < /b > < Ad > td > < SELECT NAME= contributors SIZE= 6 NTULTIPLE > This is a possible default selection, the same as described above for "dare.
< OnION VALUE = "-I finx nanie = -contributors niatch =,-I true = selectedl > All Contributors 7his element nzarks the beginning of a loop on contributors. Wien this element is evaluated, "result.exe "forms a query to the server that ivill relllr7l 0 list ofall document contributors (companies) that this particular user is entitled to read docuinentsfront. The request is asynchronous, so as each contributor record is returizedfroin the server, "request. exe "can fill in the inside of this loop. Insidethe loop is an element that displays the ID number of the contributor, optionally folloived by the %vord "selected" if it should be the default selection on thisfonn, based oil prior values of the form fields "contributors f mx start= contributorlistj < OPTION VALUE= {mx name= contributorid match =-contributors true= "%s selected" false= "%s") > fmx name= contributorname} {mx end= contributorlist) < OPTION VALUE = 11211 > 3S < /SELECT > </td> </tr> < tr valign= "top" > < td > < b > Industries: < /b > < 1td > < td > <SELECT NAMErnindustries SIZE= 6 MULTIPLE> < OPTION VALUE= "-I" {mx name =-industries match =,-I true selected) > All Industries j This element and the following loop is the same as the contributor loop above, except it lists the industries that the user inav choose as selection criteria for documents, instead of contributors.
nix start= industrybst) < OPTION VALUE, = {nix iianic=ijidustryid niatch=-industries truc="%s selected" false="%s" > (nix nanic=ijidustrynanie} {nix end= industryfist} < OPTION VALUE= "T' > < /SELECT > /td > < /tr > /table > <hr> These buttons are duplicates of the ones above ivefound it ivas convenient to have thein here too.
< input type= "submit" name= "subaction" value= "Submit" > <input type="submit" name = "subaction" value= "Count Only" > < input type= "submit" nanie="subaction" value= "Summary" > < input type="submit" name = "subaction" value= "Aryl Notes" > < input type= "submit" name= "subaction" value= "Reset"-> < input type= "submit" name= "subaction" value= "BBoard" > < input type= "hidden" name= "current" value= "query" > < /foriii > < /body > < /htnil > The preceding example generates a page 200 for display on the user's Internet browser at the user's user computer 6, 8 as shown in Fig. 3. (The graphic listing the service name is not shown.) Using the document query page 200, the user can specify parameters for a search of reports located at the repository server 2. The user can specify one or more of the following parameters: symbol (202), period of time, from a drop' down list box (204), keywords, and logical joins thereof (206), contributors (20.8), and industry groups (210). A symbol guide 220 is available if the user does not know a stocks ticker symbol, etc.
-78.
A partial list of the HTML generated for the contribuzors list box (208) is shown below:
<SELECT NANIE= contributors SIZE= 6 NTULTIPLE > 5 < OPTION VALUE- = "-I" selected > [ AD Contributors <OPTION VALUE, = 42 > Adains, Harkness & Hill OPTION VALUE, = 47 > Alex Broivn & Sons OPTION VALUE = 128 > Auerbach Grayson & Co., Inc.
OPTION VALUE, =53 > Broivn Brothers Harrnan & Co, < OPTION VALUE= 109 > Chicago Corporation OPTION VALUE, = 157 > Closed End Fund Digest < OPTION VALUE= "-2" 15 < /SELECT > A submit button 212 allows the user to submit the query, as discussed in detail in example three below. A count only button 214 allows the user to request a count of all documents available to that user that satisfy the query parameters. A reset button 216, if selected, clears the form. A BBoard button, if selected causes a bulletin board to be created for the user, as per the first example above.
Example 3: The User Makes a Query In the preceding example, the user requested a form from which he could make a query. This example will step through the user's actions, and the result it produces.
For this example, assume that the user has decided b select documents from Alex Brown & Sons, released over the last 30 days, that have the phrase "strong buy". in them. To do this, in the query form, the user selects the "Last 30 Days" item in the periocl of time combo box 204, enters "strong buy" (quotes included, to indicate a phrase instead of two independent words) in the keywords edit window 206, and selects "Alex Brown & Sons" in the contributors list box 208. To get the list of headlines -79, that match this request, the user selects the submit button 212.
The request that goes to the web server 4 at this point is to run "result.exell again, but there is additional information about date, keywords, and contributors in the request. Fields are also defined for industries and ticker syTnbols, but they ar& empty fields because the user did not specify anything for them. After the web server 4 verifies the user (as described above), it starts the "request.exell program with these form fields as additional input.
The "request.exe" program determines from the input fields that a specific query is desired, and from the value of the 11subaction" field (button 212) that the user wants a headline list, as opposed to a simple headline count, or a headline summary. The "request.exell program selects the HTML. template "RESULTRL.TPL", choosing the list format output (indicated by the "L" at the end of the file name) for just as it d.id for the first example.
It constructs a headline query based upon the input fields for date, contributor, and keywords. It then submits the query to the full-text search server 13 (since there are keywords specified in the query). It then opens the HTML template, and f ills in the elements from the result set of the query, in the same manner as for the Bulletin Board in the first example.
The resulting page 300 generated for display on the user's Internet browser at the user's user computer 6, 8 as shown-in Fig. 4. (The graphic listing the service name is not shown.) The page is similar -in many respects to that shown in Fig. 2. A score column 402 shows a relevancy score. The summary line 404 shows the total number of documents that satisfy the query, the total number displayed and query search parameters.
The user may then select a document by cl icking on the document's headline. The document transfer process takes place as follows: The web server 4 issues a request to the relational database 11 asking whether the user is s permitted to view the selected document. Assuming that the selected SQL server is available (if not, the backup procedure described above takes place), th.en the SQL server-returns whether the tise is so permitted. If the user is not permitted, then the web server 4 generates a HTML page using an error template. If the user is permitted, the requested document file is opened, the web server 4 generates the appropriate HTTP header and outputs it to STDOUT, and the document file is read and its contents is output to STDOUT. At the user computer 6, 8, the Internet browser program launches a helper application to allow the user to read, print and save the.document.
Although the invention has been described with reference 2 0 to a particular embodiment and arrangement of parts, features and the like, the above disclosure is not intended to exhaust or limit all possible embodiment, arrangements or features, and indeed, many other modifications and variations will be ascertainable to those skilled in the art.
For example, the central site 1 may distribute reports by other networks in addition to the Internet. Fig. 5 illustrates an enhanced system architecture according to the present invention. In the enhanced system, the central site 1 is also coupled to one or a number of viewer servers 30, 32. Typically, the viewer servers 30, 32 are located at a remote location with respect to the central site 1 and are coupled to the centizal site 1 over a proprietary network. Each viewer server 30, 32 includes a database 40, 42 and is coupled to one or a number of viewer workstations 34, 36, 38. The viewer workstations 34, 36 execute the Acrobat Exchange Program, available from Adobe Systems, and the MulLex Publisher TM Research Viewer program, by Multex Systems, Inc. The central site I maintains a distribution list that lists which viewer servers 30, 32 are permitted to receive reports from which contributors. (As a simple example, if viewer server A 30 is located at company ABC, Inc. anCl. viewer server B 32 is locatdd at company RST, Inc. , then, for a particular report, the repository server may distribute the report to viewer server A 30 but not viewer server B 32.) When a report is rece ived by the central site 1, the central site 1 transmits a task to each viewer server 30, 32 that is permitted to receive that report that a new report has arrived, and the permitted viewer servers 30, 32 executes the task to 11pullet that reuort from the central site 1 and store it in their respective databases 40, 42. The viewer server 30, 32 will then cause the title of the report to be displayed on viewer workstations 34, 36, 38 that are used by investors who are permitted (as determined by the distribution level set by the contributor) Investors can also issue queries. to the viewer server's database, which will return titles of relevant reports. The investor may then request a report, which is "pulled 2S down" from the viewer server 30, 32 to the requesting viewer workstation 34, 36, 38.
It is noted that the web server 4 and repository server 2 of the representative embo'diment of the nresent inven'tion can be implemented utilizing a logic circuit or a computer memory comprising encoded computer-readable instructions, such as a computer program. The functionality of the logic circuit or computer memory has been described in detail above. Generally, the present invention has practical application as it enables reports and other information to be distributed speedily and searched efficiently by authorized users in remote locations.
Thus, the above described embodiments are merely illustrative of the principles of the present invention.
other embodiments of the present invention will be apparent to those skilled in the art without departing from the spirit- and scope of the present invention.

Claims (10)

CLAIM:
1. A method to determine whether a user is authorized to access a secure server from a remote computer where the secure server does not require that the user logs of f, comprising:
receiving a user identification code from the remote computer; verifying the user identification code against a database of authorized users; if verified, providing the remote computer with a verification signature; transmitting state information to the remote computer fo r storage at the remote computer, the state information including an authorization variable; receiving a request for information from the remote comnuter, the request including the verification signature; validating the verification signature; receiving the state information from the remote comouter; relrieving the authorization variable from the sLat-e information; if the aur-horization variable is empty, providing a new 'value for the authorization variable, storing the new value as associated with the user identification code at a central location, and transmitting the new value to the remote computer; and if the authorization variable is not empty, determining if the value of the authorization variable retrieved from the state information matches a value for the authorization variable stored at the central location associated With the user identification code, and if there is a ma. tch, processing the request for information.
2. The method of claim 1 further comprising the final step of denying access if the value of the authorization variable retrieved from the state information does not match the value for the authorization variable stored at the central location associated with the user identification code.
3. The method of claim 1 wherein the user identification code comprises a user ID and a password.
4. The method of claim 1 wherein the step of providing a new value for the authorization variable comprises providing a random value for the authorization variable.
5. The method of claim I -further comprising the step of storing a time of access at the central location along with the value of the authorization variable whenever a request for information is received.
6.. The method of claiTp. 5 'wherein the step of determining if the value of the authorization variable retrieved from the state information matches a value for the authorization variable stored at the central location associated with the user identification code further comprises determining that there is a match, regardless of the value of the authorization variable recrieved from the state information.
7. The method of claim 6 wherein the request for information is a requesc for an investiment research report.
8. The method of claim 7 further comprising the step of determining which investment research reports the user is permitted to access.
9. The method of claim 1 wherein the steps of transmitting further comprise transmitting via the Internet.
10. The method of claim 9 wherein the remote computer includes a browser program and wherein the step of transmitting the new value to the remote computer further comprises the step of storing the new value at the remote computer.
GB0024068A 1996-06-04 1997-05-29 Information delivery system and method Expired - Lifetime GB2352547B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/658,966 US5802518A (en) 1996-06-04 1996-06-04 Information delivery system and method
GB9826527A GB2329269B (en) 1996-06-04 1997-05-29 Information delivery system and method

Publications (3)

Publication Number Publication Date
GB0024068D0 GB0024068D0 (en) 2000-11-15
GB2352547A true GB2352547A (en) 2001-01-31
GB2352547B GB2352547B (en) 2001-03-28

Family

ID=26314776

Family Applications (3)

Application Number Title Priority Date Filing Date
GB0024066A Expired - Lifetime GB2352070B (en) 1996-06-04 1997-05-29 Information delivery system and method
GB0024068A Expired - Lifetime GB2352547B (en) 1996-06-04 1997-05-29 Information delivery system and method
GB0024071A Expired - Lifetime GB2352857B (en) 1996-06-04 1997-05-29 Information delivery system and method

Family Applications Before (1)

Application Number Title Priority Date Filing Date
GB0024066A Expired - Lifetime GB2352070B (en) 1996-06-04 1997-05-29 Information delivery system and method

Family Applications After (1)

Application Number Title Priority Date Filing Date
GB0024071A Expired - Lifetime GB2352857B (en) 1996-06-04 1997-05-29 Information delivery system and method

Country Status (1)

Country Link
GB (3) GB2352070B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7539665B2 (en) 2001-10-23 2009-05-26 Visto Corporation System and method for merging remote and local data in a single user interface
US8984021B2 (en) 2010-12-30 2015-03-17 Fti Consulting, Inc. System and method for harvesting electronically stored content by custodian

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481612A (en) * 1992-12-15 1996-01-02 France Telecom Establissement Autonome De Droit Public Process for the authentication of a data processing system by another data processing system

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502637A (en) * 1994-06-15 1996-03-26 Thomson Shared Services, Inc. Investment research delivery system
US5978799A (en) * 1997-01-30 1999-11-02 Hirsch; G. Scott Search engine including query database, user profile database, information templates and email facility

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481612A (en) * 1992-12-15 1996-01-02 France Telecom Establissement Autonome De Droit Public Process for the authentication of a data processing system by another data processing system

Also Published As

Publication number Publication date
GB2352070B (en) 2001-05-30
GB0024068D0 (en) 2000-11-15
GB0024071D0 (en) 2000-11-15
GB2352070A (en) 2001-01-17
GB2352857A (en) 2001-02-07
GB0024066D0 (en) 2000-11-15
GB2352547B (en) 2001-03-28
GB2352857B (en) 2001-03-28

Similar Documents

Publication Publication Date Title
US5802518A (en) Information delivery system and method
US5940843A (en) Information delivery system and method including restriction processing
US5864871A (en) Information delivery system and method including on-line entitlements
CN1104696C (en) System and method for automatically adding informational hypertext links to received documents
US7653870B1 (en) System and method of dynamically generating index information
AU2005202279B2 (en) Method, system, and apparatus for discovering and connecting to data sources
CN100476828C (en) Safety search engine system based on accessing control
US6981217B1 (en) System and method of obfuscating data
Douglis et al. The AT&T Internet Difference Engine: Tracking and viewing changes on the web
CA2270466C (en) Corporate information communication and delivery system and method including entitlable hypertext links
US7133863B2 (en) Method and apparatus to search for information
US6631367B2 (en) Method and apparatus to search for information
US7191185B2 (en) Systems and methods for facilitating access to documents via an entitlement rule
US7266821B2 (en) Method and apparatus for processing jobs on an enterprise-wide computer system
US7606805B2 (en) Distributed search system and method
US7062707B1 (en) System and method of providing multiple items of index information for a single data object
US7293012B1 (en) Friendly URLs
CA2504794A1 (en) Electronic document repository management and access system
US20050289159A1 (en) Web-enabled real-time link selection apparatus and method
US20030233344A1 (en) Apparatus and method for responding to search requests for stored documents
US7376709B1 (en) Method for creating durable web-enabled uniform resource locator links
GB2352547A (en) Controlling access to a secure server from a remote computer
CA2400489C (en) Information delivery system and method
US20050076033A1 (en) Method and system distribute search queries over a network
Guo INTEGRATING AUTOMATIC WEB PAGE CLUSTERING INTO

Legal Events

Date Code Title Description
PE20 Patent expired after termination of 20 years

Expiry date: 20170528