David Fraser
davidf at sjsoft.com
Wed Aug 17 11:07:44 EDT 2005
Hi Conrad Thanks for the pointer, I'll have a look... Unfortunately I can't use GPL code for this particular application but it certainly looks like a great project Actually the architecture is fairly similar to PyLucene, since it doesn't use a Java interpreter but rather compiles the Java code using gcj and then wraps that using SWIG - basically equivalent to compiling C++ code and wrapping that with SWIG. Cheers David Conrad Steenberg wrote: >Hi David > >You might also want to check out Xapian at http://www.xapian.org >""" >Xapian is an Open Source Probabilistic Information Retrieval library, >released under the GPL. It's written in C++, with bindings to allow use >from other languages (Perl, Python, PHP, Java, and TCL are currently >supported; Guile and C# are being worked on). >""" > >Calling Java code from Python just seems rather offensive to the >minimalist beauty I associate with Python ;-) > >Cheers > >Conrad > >On Tue, 2005-08-16 at 14:39 +0200, David Fraser wrote: > > >>We use PyLucene too and its fantastic, but just be aware that if you run >>Apache in multi-threaded mode (e.g. under Windows) there are conflicts >>with the gcj threading (for which there are also workarounds, mainly >>running a separate process for PyLucene) >> >>Julien wrote: >> >> >> >>>Why not using PyLucene ? http://pylucene.osafoundation.org/ >>> >>>It's a SWIG python port of Java Lucene, and it works perfeclty with >>>mod_python (we use it every day here at work) >>> >>>On Tue, 2005-08-16 at 15:53 +0530, Manjeet Chaudhary wrote: >>> >>> >>> >>> >>>>Hello All >>>> >>>>I am using mod_python and Lucene for searching of Arabic Text from an >>>>Index created using Lucene+Java. >>>>I am facing some problems in running "java" command using mod_python. >>>> >>>>1. I am trying to run java program using "os.system" command. >>>> Check = os.system("java ..........") >>>> >>>>2. The command returns me a value of 256. >>>> i.e Check = 256 >>>> >>>>3. I am not able to figure it out why that java program is not being >>>>executed properly. >>>> >>>>4. For the java program i have set the classpath and compiling and >>>>running that program using the classpath. >>>> >>>> export CLASSPATH = >>>>/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/lucene-1.4.3.jar >>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/PDFBox-0.6.7a.jar >>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/log4j-1.2.8.jar >>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/tm-extractors-0.4.jar >>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/ArabicAnalyzer-1.0b.jar >>>>:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/commons-collections-3.1.jar >>>> >>>> javac -classpath $CLASSPATH:. SearchFiles.java >>>> >>>> java -classpath $ClASSPATH:. SearchFiles >>>> >>>>5. SearchFiles program is running properly if i run it from shell. >>>> >>>>So please help me and tell where i am going wrong. >>>>I have attached the copy of code at the end . >>>> >>>>Thank you >>>>Manjeet Chaudhary >>>> >>>> >>>> >>>>#!/usr/bin/env python >>>>""" >>>>#------------------------------------------------------------------------------------------------------- >>>>#Name: ar_search.py >>>>#Version: 1.0 >>>>#Purpose: Searching for Infoviewer >>>>#Author: Alok Khandelwal >>>>#Created: 10-08-2005 >>>>#Licence: Infogrid Pacific EULA >>>>#-------------------------------------------------------------------------------------------------------- >>>>#Revision History >>>>#-------------------------------------------------------------------------------------------------------- >>>> >>>>#----------------Different modules required are imported >>>>here------------------- >>>>""" >>>>import cgitb,cgi,sys >>>>cgitb.enable() >>>>import os >>>> >>>> >>>>from os.path import join, abspath >>>>from mod_python import apache,util,Session >>> >>> >>>>""" >>>>#----------------End of importing >>>>modules---------------------------------------- >>>> >>>> >>>>def search(req): >>>> >>>> """This part takes Arabic keyword from req variable and write that >>>>keyword into a temp file. This temp file will be opened by java program >>>>and that program will take that value and search for the variable in the >>>>index file. >>>>Java program will store the result in results.txt file""" >>>> >>>> The_Form = util.FieldStorage(req) >>>> for name in The_Form.keys(): >>>> #--------Checking for the selected Fields and turning those flag >>>>on-------- >>>> if name == 'search_contents': >>>> value=The_Form[name] >>>> value.encode('utf-8') >>>> f=open("/home/ajinkyan/cgi-bin/infoviewer/temp.txt","w") >>>> f.write(value) >>>> f.close() >>>> >>>> try: >>>> command = "export >>>>CLASSPATH=/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/lucene-1.4.3.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/PDFBox-0.6.7a.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/log4j-1.2.8.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/tm-extractors-0.4.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/ArabicAnalyzer-1.0b.jar:/home/ajinkyan/cgi-bin/infoviewer/Jar_Files/commons-collections-3.1.jar" >>>> import os >>>> os.system(command) >>>> command = "java -classpath >>>>$CLASSPATH:/home/ajinkyan/cgi-bin/infoviewer SearchFiles" >>>> check=os.system(command) >>>> req.write("\ncheck = " + str(check)) >>>> f = open( >>>>"/home/ajinkyan/cgi-bin/infoviewer/results.txt","r") >>>> result=f.read() >>>> req.write(result) >>>> except: >>>> >>>> req.write("\n") >>>> req.write(str(sys.exc_type)) >>>> req.write("\n") >>>> req.write(str(sys.exc_value)) >>>> >>>> >>>> >>>>____________________________________________________________________________________________________________________________ >>>> >>>># After executing the os.system command the value returned in check is >>>>maximum times 256 or some thing near 32000 . >>>> >>>># Java program is running independently without any errors. Only when it >>>>is called using os.system it doesn't run . >>>> >>>># The Java program is as follows >>>> >>>>___________________________________________________________________________________________________________________________ >>>> >>>> >>>>/** >>>>* @Name : SearchFiles.java >>>>* @Version: 1.0 >>>>* @Author : Alok Khandelwal >>>>* @Created: 2 August 2005 >>>>* @Purpose: Searching in index for arabic contents >>>>* @Copyright:(c)2004 by Infogrid Pacific Pte. Ltd. >>>>* @Licenece :Infogrid Pacific Eula >>>>*/ >>>> >>>> >>>> >>>> >>>>import org.apache.lucene.search.Searcher; >>>>import org.apache.lucene.search.IndexSearcher; >>>>import org.apache.lucene.search.Query; >>>>import org.apache.lucene.search.Hits; >>>>import org.apache.lucene.queryParser.QueryParser; >>>>import gpl.pierrick.brihaye.aramorph.lucene.ArabicStemAnalyzer; >>>>import java.io.*; >>>>import org.apache.lucene.document.Document; >>>>class SearchFiles >>>>{ >>>> public static void main(String[] args) >>>> { >>>> try >>>> { >>>> FileInputStream fis = new FileInputStream(new File ( >>>>"/home/ajinkyan/cgi-bin/infoviewer/temp.txt")); >>>> BufferedReader in = new BufferedReader(new >>>>InputStreamReader(fis,"UTF8")); >>>> char [] buf = new char[80]; >>>> int numRead; >>>> numRead=in.read(buf,0,80); >>>> String field="\""; >>>> for(int k=0;k<numRead;k++) >>>> { >>>> field=field+buf[k]; >>>> } >>>> field=field+"\""; >>>> FileOutputStream fos = new FileOutputStream(new File ( >>>>"/home/ajinkyan/cgi-bin/infoviewer/results.txt")); >>>> BufferedWriter out = new BufferedWriter(new >>>>OutputStreamWriter(fos,"UTF8")); >>>> Searcher searcher = new >>>>IndexSearcher("/home/ajinkyan/cgi-bin/infoviewer/index_arabic"); >>>> try >>>> { >>>> Query query = QueryParser.parse(field, "contents", >>>>new ArabicStemAnalyzer()); >>>> Hits hits = searcher.search(query); >>>> String output="Total match document = \n"; >>>> for(int j=0;j<hits.length();j++) >>>> { >>>> Document doc = hits.doc(j); >>>> // System.out.print(hits.score(j)+" "); >>>> output = output +"\n"+ doc.get("filename"); >>>> } >>>> out.write(output); >>>> out.write("\n"); >>>> } >>>> catch(Exception e) >>>> { >>>> out.write("Parser Error"); >>>> out.write("\n"); >>>> >>>> } >>>> searcher.close(); >>>> out.close(); >>>> } >>>> catch (Exception e) >>>> { >>>> String s= " caught a " + e.getClass() + >>>> "\n with message: " + e.getMessage(); >>>> } >>>> }//end of main >>>>}//end of SerchFiles >>>>_______________________________________________ >>>>Mod_python mailing list >>>>Mod_python at modpython.org >>>>http://mailman.modpython.org/mailman/listinfo/mod_python >>>> >>>> >>>> >>>> >>>> >>_______________________________________________ >>Mod_python mailing list >>Mod_python at modpython.org >>http://mailman.modpython.org/mailman/listinfo/mod_python >> >>
|