]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/searchEngine/searchEngine.ml
MQueryInterpreter: interface updated
[helm.git] / helm / searchEngine / searchEngine.ml
index 35270fd62c8ee31d46ca2469a819b94e57ebfeb8..0e28725feabcb510f10ae95754fca67919c7f5f5 100644 (file)
@@ -33,14 +33,9 @@ Http_common.debug := true;;
   (** accepted HTTP servers for ask_uwobo method forwarding *)
 let valid_servers = [ "mowgli.cs.unibo.it:58080" ; "mowgli.cs.unibo.it" ; "localhost:58080" ] ;;
 
-open Printf;;
+let mqi_flags = [] (* default MathQL interpreter options *)
 
-let postgresConnectionString =
- try
-  Sys.getenv "POSTGRESQL_CONNECTION_STRING"
- with
-  Not_found -> "host=mowgli.cs.unibo.it dbname=helm_mowgli_new_schema user=helm"
-;;
+open Printf;;
 
 let daemon_name = "Search Engine";;
 let default_port = 58085;;
@@ -181,19 +176,21 @@ in
 let callback (req: Http_types.request) outchan =
   try
     debug_print (sprintf "Received request: %s" req#path);
-    if req#path <> "/getpage" then
-      Mqint.init postgresConnectionString;
     (match req#path with
     | "/execute" ->
+        let mqi_handle = MQIConn.init mqi_flags debug_print in 
         let query_string = req#param "query" in
         let lexbuf = Lexing.from_string query_string in
         let query = MQueryUtil.query_of_text lexbuf in
-        let result = MQueryGenerator.execute_query query in
+        let result = MQueryGenerator.execute_query mqi_handle query in
         let result_string = pp_result result in
+       MQIConn.close mqi_handle;
         Http_daemon.respond ~body:result_string ~headers:[contype] outchan
     | "/locate" ->
+        let mqi_handle = MQIConn.init mqi_flags debug_print in
         let id = req#param "id" in
-        let result = MQueryGenerator.locate id in
+        let result = MQueryGenerator.locate mqi_handle id in
+       MQIConn.close mqi_handle;
         Http_daemon.respond ~headers:[contype] ~body:(pp_result result) outchan
     | "/getpage" ->
         (* TODO implement "is_permitted" *)
@@ -250,6 +247,7 @@ let callback (req: Http_types.request) outchan =
     | "/searchPattern"
     | "/matchConclusion"
     | "/locateInductivePrinciple" ->
+        let mqi_handle = MQIConn.init mqi_flags debug_print in
         let term_string = req#param "term" in
         let lexbuf = Lexing.from_string term_string in
         let (context, metasenv) = ([], []) in
@@ -394,13 +392,13 @@ List.iter (fun u -> prerr_endline ("<" ^ Netencoding.Url.decode u ^ ">")) tail;
         in
         let module Disambiguate' = Disambiguate.Make (Chat) in
         let (id_to_uris', metasenv', term') =
-          Disambiguate'.disambiguate_input
+          Disambiguate'.disambiguate_input mqi_handle
             context metasenv dom mk_metasenv_and_expr id_to_uris
         in
         (match metasenv' with
         | [] ->
             let must',only = get_constraints term' req#path in
-            let results = MQueryGenerator.searchPattern must' only in 
+            let results = MQueryGenerator.searchPattern mqi_handle must' only in 
             Http_daemon.send_basic_headers ~code:200 outchan ;
             Http_daemon.send_CRLF outchan ;
             iter_file
@@ -435,12 +433,10 @@ List.iter (fun u -> prerr_endline ("<" ^ Netencoding.Url.decode u ^ ">")) tail;
             Http_daemon.respond
               ~headers:[contype]
               ~body:"some implicit variables are still unistantiated :-("
-              outchan)
-
+              outchan);
+        MQIConn.close mqi_handle
     | invalid_request ->
         Http_daemon.respond_error ~status:(`Client_error `Bad_request) outchan);
-    if req#path <> "/getpage" then
-      Mqint.close ();
     debug_print (sprintf "%s done!" req#path)
   with
   | Chat_unfinished -> prerr_endline "Chat unfinished, Try again!"
@@ -456,7 +452,6 @@ printf "Current directory is %s\n" (Sys.getcwd ());
 printf "HTML directory is %s\n" pages_dir;
 flush stdout;
 Unix.putenv "http_proxy" "";
-Mqint.set_database Mqint.postgres_db;
 Http_daemon.start' ~port callback;
 printf "%s is terminating, bye!\n" daemon_name