|
Manjeet Chaudhary
manjeet at infogridpacific.com
Tue Aug 16 06:23:39 EDT 2005
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
|