Abstract:
Systems, methods, and software for providing a distributed search function for online delivery platforms used in law firms and other enterprises are described. For example, one aspect of the systems, methods and software provides a plurality of data sets. The data sets may comprise indices into other sets of data. At least one search engine is associated with each data set. A system receiving a search request determines which search engines are used to process the search request based on the data sets involved in the search request. The search request is then forwarded to the identified search engines.

Description:
RELATED APPLICATIONS  
       [0001]     This application claims priority to U.S. Provisional Patent Application 60/465,585, which was filed on Apr. 25, 2003 which is incorporated herein by reference. 
     
    
     COPYRIGHT NOTICE AND PERMISSION  
       [0002]     One or more portions of this patent document contain material subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyrights whatsoever. The following notice applies to this document: Copyright© 2003, The Thomson Corporation.  
       TECHNICAL FIELD  
       [0003]     Various embodiments of the present invention concern information retrieval systems and knowledge-management systems, and more particularly concern distributed search functions within such systems.  
       BACKGROUND  
       [0004]     Modern computer online information providers typically require the ability to search vast quantities of data. For example, the American legal system, as well as some other legal systems around the world, rely heavily on written judicial opinions, the written pronouncements of judges, to articulate or interpret the laws governing resolution of disputes. As a consequence, judges and lawyers within our legal system are continually researching an ever expanding body of past opinions, or case law, for the ones most relevant to resolution or prevention of new disputes. Found cases are studied for relevance and are ultimately cited and discussed in documents, called work product, which, for example, advocate court action, counsel clients on likely court actions, or educate clients and lawyers on the state of the law in particular jurisdictions.  
         [0005]     Additionally, knowledge management systems, document management systems, and other online data providers typically require information from data sets that may vary in size from large to small. Data sets in the terabyte range are no longer uncommon. For example, some systems may utilize public records comprising approximately 1.2 terabytes of unique data, and tax and accounting (TA) data that includes approximately 20 gigabytes (GB) of unique data. In previous systems, problems have occurred because the system can typically store only five percent of unique public record data. Further, the system is too big for unique TA data, which typically shares server space with other data providers.  
         [0006]     Such variances in data set and system sizes has an impact on search-engine performance, especially related to enterprise-server implementations (including inherent availability issues). For example, if a memory fault occurs within a system&#39;s CPU, the system typically cannot run the search service until the fault is resolved, and failover mechanisms are problematic. Because the search service is typically memory-intensive and not bound to the CPU, resources are wasted resolving these fault issues.  
         [0007]     Furthermore, at times query processing forces the search engine to access a disk for data pages if they are not available in the file system cache. While in some cases data typically can be found in the file system cache if the data set is small enough to be completely held in RAM, it is often the case that data sets are so large that query processing often occurs at the disk level rather than the file-system-cache level. Further, current architectures typically do not ensure that the same search engine will process the same data consistently, which negates search-engine caching advantages.  
         [0008]     Accordingly, the present inventor has identified a need for better systems, tools, and methods of providing search functions within online delivery platforms.  
       SUMMARY  
       [0009]     To address this and/or other needs, the present inventor has devised novel systems, methods, and software for providing a distributed search function for online delivery platforms used in law firms and other enterprises. For example, one aspect of the systems, methods and software provides a plurality of data sets. The data sets may comprise indices into other sets of data. At least one search engine is associated with each data set. A system receiving a search request determines which search engines are used to process the search request based on the data sets involved in the search request. The search request is then forwarded to the identified search engines.  
         [0010]     Notably, the exemplary embodiment provides a search function that is distributed across multiple search engines in a way such that search data is likely to be cached in available RAM, thereby avoiding costly disk searches. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0011]      FIG. 1  is a block diagram of an exemplary distributed search system  100  corresponding to one or more embodiments of the present invention.  
         [0012]      FIG. 2  is a block diagram providing further details of an exemplary distributed search system  200  corresponding to one or more embodiments of the present invention.  
         [0013]      FIG. 3  is a flow chart corresponding to one or more exemplary methods of operating an exemplary distributed search system and associated components that embody the present invention. 
     
    
     DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS  
       [0014]     The following description, which incorporates the figures and the appended claims, describes and/or illustrates one or more exemplary embodiments of one or more inventions. These embodiments, offered not to limit but only to exemplify and teach the invention(s), are shown and described in sufficient detail to enable those skilled in the art to make and use the invention(s). Thus, where appropriate to avoid obscuring the one or more inventions, the description may omit certain information known to those of skill in the relevant art.  
       Exemplary Information System  
       [0015]      FIG. 1  depicts an exemplary distributed search system  100  that incorporates one or more teachings of the present invention. System  100  includes a search controller  102 , a message switch  104 , search engines  106 , network attached storage (NAS)  110 , and network  108  communicably coupling search engines  106  to NAS  110 . The above-mentioned components may be distributed across one or more server computers. In some embodiments, the server computers comprise blade based service computers from Sun Microsystems, Inc. However, in alternative embodiments, servers based on Intel processor architectures may be used.  
         [0016]     Search controller  102  “listens” for search requests. Utilizing a “split-merge” engine, the search controller receives requests and splits them into component requests (serviced by the search engines  106 ). When responses are received from the search engines  106 , the search controller merges the responses and sends them to the requestor. Split requests, referred to programmatically as a “SearchEngineRequest”, may be made to the various data sets that comprise or are generated from the data collection or collection set. In some embodiments, the data set comprises a portion of an index (referred to as an “IndexSet”) to a data collection or collection set.  
         [0017]     Message switch  104  operates to route messages from search controller  102  to one or more search engines  106 . The messages may include search requests that are to be performed by one or more search engines  106 . In some embodiments of the invention, message switch  104  provides a Java Message Service (JMS) interface. Further, in some embodiments the messages may be routed using message queuing software such as the MQ messaging system available from IBM Corp. However, no embodiment of the invention is believed to be limited to a particular message routing system, and in alternative embodiments the SonicMQ message queuing software from Sonic Software Corporation may be used.  
         [0018]     In some embodiments, search engine  106  includes a Java “wrapper” that pre- and post-processes data searched and resolved by the server. In some embodiments, this processing may be carried out through a Java Native Interface. The search engines  106  receive the SearchEngineRequest component and specific IndexSet and cause a search to be performed on the IndexSet specified with the request.  
         [0019]     The data sets to be searched may reside on Network Attached Storage  110  that is communicably coupled to search engine  106  through network  108 . Network attached storage may be any type of storage device accessible through a network. Examples of such network attached storage are known in the art and include file servers, storage servers and other network attached storage media.  
         [0020]     Network  108  may be any type of wired or wireless network capable of supporting data communication. In some embodiments of the invention, network  108  comprises a private Gigabit Ethernet network. However no embodiment of the invention is believed to be limited to a particular network type.  
         [0021]     Search engines  106  may run on the generic Intel systems with the Linux OS installed. Data for the IndexSets in some embodiments may be accessed through a network file system (NFS) protocol from network attached storage (NAS) server  110 . As the initial query enters the search engine, the search engine is given the IndexSet name and file names necessary to satisfy the search query.  
         [0022]     The search engine  106  may make NFS calls to the NAS server  110  and request data for those files. This data is typically static and is cached on the NFS client system. Subsequently, when the search engine accesses data for its assigned IndexSet, it may make a meta-directory call to the NFS server for file information. The search engine  1 - 6  reads the data pages from the local RAM cache, which allows a RAM-speed search of query terms.  
         [0023]      FIG. 2  provides further details of an exemplary distributed search system  200  that incorporates one or more teachings of the present invention. System  200  includes the components described above with reference to  FIG. 1 , and in addition includes product/client  202 , resource manager  206 , and Online Delivery Platform agent  208 .  
         [0024]     Product/client  202  may be any client software module that uses the distributed search functionality provided according to the teachings the embodiments of the invention. Such software includes browsers, document management systems, knowledge management system, document retrieval systems, case law retrieval systems and the like. Product/client  202  issues one or more search requests to a message switch  104 , which routes the requests to a service controller based on data in the search request.  
         [0025]     Online Delivery Platform (ODP) agent process  208  starts processes on a server such as search controllers  102  and search engines  106  and monitors and manages these processes. In some embodiments, ODP agent process  208  also keeps track of the individual process and reports on their processing status to a bulletin board database. Further, in some embodiments, ODP agent process  208  restarts the search controllers or search engines when there are faults or “long transaction” criteria. The ODP agent  208  is considered the hosting agent process that runs the ODP environments.  
         [0026]     When the system boots, the ODP agent  208  on the server starts and queries a (preconfigured) Resource Manager  206  for engines that allocate the ODP agent  208  to an Agent Manager (not shown). The Agent Manager contains information about agents and search engines in a domain and can assign workloads dynamically to ODP Agents  208  that query it. In some embodiments, the Agent Manager comprises an LDAP (Lightweight Directory Access Protocol) agent. In some embodiments, search engines are assigned message queues with names that correspond to the names of the IndexSet associated with the search engine  106 .  
         [0027]     In some embodiments, if a search engine  106  fails, its agent will detect the failed engine and restart it. The query processed at the time of the search-engine failure may be lost and the controller request is “errored” out. (Some embodiments may transfer a copy of the failed query to another search engine operating on the subject index set.) However, the failed search engine  106  may be restarted so that new queries can be processed without delay.  
         [0028]     In some embodiments, if the search engine system encounters a CPU, RAM, or other hardware failure, a message switch agent detects that the IndexSet queue has no processes servicing it. The agent immediately alerts the Agent Manager to reassign search engines to service that IndexSet queue.  
         [0029]     The exemplary system design of various embodiments incorporates deploying generic systems with a fixed OS image that “learns” its role in the distributed search architecture during the boot process. The system&#39;s resiliency accommodates process or hardware failure, and its flexibility allows the allocation of additional resources for failed components.  
         [0030]     Further, in some embodiments, additional resources allocated for failover are not “idle” (waiting for failover). They can be deployed as “workload handlers,” providing additional processing if processing bottlenecks are detected. This workload can be detected through the message switch  104  or ODP agent  208 , which can detect and report on workload patterns of each IndexSet queue.  
         [0031]     Additionally, the exemplary architecture of various embodiments is conducive to a “lazy-monitoring” scheme. No component failures need to be detected and fixed immediately. Detection and notification can happen when catastrophic events occur, but fixing components can take place any time, as long as there are additional resources available to assume their workload.  
       Exemplary Method of Operation  
       [0032]      FIG. 3  shows a flow chart  300  of one or more exemplary methods of operating an information-management system, such as system  100 . Flow chart  300  includes blocks  310 - 340 , which are arranged and described in a serial execution sequence in the exemplary embodiment. However, other embodiments may execute two or more blocks in parallel using multiple processors or processor-like devices or a single processor organized as two or more virtual machines or sub processors. Other embodiments also alter the process sequence or provide different functional partitions to achieve analogous results. Moreover, still other embodiments implement the blocks as two or more interconnected hardware modules with related control and data signals communicated between and through the modules. Thus, the exemplary process flow applies to software, hardware, and firmware implementations.  
         [0033]     At block  310 , the exemplary method begins with providing one or more data sets. In some embodiments, the data sets comprise portions of an index to a data collection or set of data collections. The index may be divided based on ranges of database indices, with each range comprising a data set. The data sets are then stored on a storage device such as NAS  110 .  
         [0034]     Block  320  entails receiving a search request. At block  330 , the search request is analyzed to determine which data sets are required.  
         [0035]     At block  340 , Search requests are then forwarded the search engines that correspond to the data sets identified at block  330 . In some embodiments of the invention, search requests are forwarded to search engines through message queues. Further, in some embodiments, the message queue associated with a particular search engine is given the same name as the IndexSet that is configured for the search engine.  
       CONCLUSION  
       [0036]     The embodiments described above are intended only to illustrate and teach one or more ways of making and using the present invention, not to restrict its breadth or scope. The actual scope of the invention, which embraces all ways of practicing or implementing the teachings of the invention, is defined only by one or more issued patent claims and their equivalents.