lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From syedfa <fayyazud...@gmail.com>
Subject Need help with XML Query Parser example in Lucene 3.0
Date Wed, 23 Dec 2009 01:04:14 GMT

Dear fellow Java developers:

I am trying to run the XML Query Parser example that comes with Lucene 3.0
source distribution.  I have the application structured identical to the one
you download, and I am trying to run it in eclipse.  When I launch the
application, fill out the form that appears on index.jsp, and then submit it
to search the index, I get the following error 505:

javax.servlet.ServletException: Error processing query

org.apache.lucene.xmlparser.webdemo.FormBasedXmlQueryDemo.doPost(FormBasedXmlQueryDemo.java:124)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


root cause 

java.lang.NullPointerException

org.apache.lucene.xmlparser.webdemo.FormBasedXmlQueryDemo.doPost(FormBasedXmlQueryDemo.java:107)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


I absolutely have no idea why this is happening, as I even structured the
package of the servlet in eclipse identical to the way it is in the example. 
I have attached my entire servlet, "FormBasedXmlQueryDemo" below:

public class FormBasedXmlQueryDemo extends HttpServlet {
	private static final long serialVersionUID = 1L;
    
	private QueryTemplateManager queryTemplateManager;
	private CorePlusExtensionsParser xmlParser;
	private IndexSearcher searcher;
	private Analyzer analyzer = new
StandardAnalyzer(org.apache.lucene.util.Version.LUCENE_CURRENT);
	
    public FormBasedXmlQueryDemo() {
        super();
        // TODO Auto-generated constructor stub
    }

    @Override
	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		super.init(config);
		
		try{
			
			openExampleIndex();
			
			String xslFile=config.getInitParameter("xslFile");
			String defaultStandardQueryParserField =
config.getInitParameter("defaultStandardQueryParserField");
			queryTemplateManager = new
QueryTemplateManager(getServletContext().getResourceAsStream("/WEB-INF/" +
xslFile));
			xmlParser = new CorePlusExtensionsParser(defaultStandardQueryParserField,
analyzer);
			
		}catch(Exception e){
			throw new ServletException("Error loading query template", e);
		}
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {

	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		
		Properties completedFormFields = new Properties();
		Enumeration pNames = request.getParameterNames();
		
		while (pNames.hasMoreElements()){
			
			String propName = (String) pNames.nextElement();
			String value = request.getParameter(propName);
			
			if ((value != null) && (value.trim().length()>0)){
				completedFormFields.setProperty(propName, value);
			}
		}
		
		try{
			org.w3c.dom.Document xmlQuery =
queryTemplateManager.getQueryAsDOM(completedFormFields);			
			Query query = xmlParser.getQuery(xmlQuery.getDocumentElement());
			TopDocs topDocs = searcher.search(query, 10);
			
			if (topDocs != null) {
				ScoreDoc[] sd = topDocs.scoreDocs;
				Document[] results = new Document[sd.length];
				
				for(int i = 0; i < results.length; i++){
					
					results[i] = searcher.doc(sd[i].doc);
					request.setAttribute("results", results);
				}
			}
			
			RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/index.jsp");
			dispatcher.forward(request, response);
		}
		catch(Exception e){
			throw new ServletException("Error processing query", e);
		}
	}
	
	private void openExampleIndex() throws CorruptIndexException, IOException {
		
		
		RAMDirectory rd = new RAMDirectory();
		IndexWriter writer = new IndexWriter(rd, analyzer,
IndexWriter.MaxFieldLength.LIMITED);
		InputStream dataIn =
getServletContext().getResourceAsStream("/WEB-INF/data.tsv");
		BufferedReader br = new BufferedReader(new InputStreamReader(dataIn));
		String line = br.readLine();
		
		while (line != null){
			
			line = line.trim();
			if (line.length() > 0){
				
				StringTokenizer st = new StringTokenizer(line, "\t");
				Document doc = new Document();
				doc.add(new Field("location",st.nextToken(),Field.Store.YES,
						Field.Index.ANALYZED_NO_NORMS));
				doc.add(new Field("salary",st.nextToken(),Field.Store.YES,
						Field.Index.ANALYZED_NO_NORMS));
				doc.add(new Field("type",st.nextToken(),Field.Store.YES,
						Field.Index.ANALYZED_NO_NORMS));
				doc.add(new Field("description",st.nextToken(),Field.Store.YES,
						Field.Index.ANALYZED));
				writer.addDocument(doc);
			}
			
			line = br.readLine();
		}
		
		writer.close();
	}

}



When I was tracing through the code, it appears that it was throwing the
exception just as it tried to process the line:

TopDocs topDocs = searcher.search(query, 10);

Does anyone know where I am going wrong?  

Thanks in advance to all who reply.
-- 
View this message in context: http://old.nabble.com/Need-help-with-XML-Query-Parser-example-in-Lucene-3.0-tp26896711p26896711.html
Sent from the Lucene - Java Users mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-user-help@lucene.apache.org


Mime
View raw message