[prev in list] [next in list] [prev in thread] [next in thread] 

List:       lucene-user
Subject:    Re: Need help with XML Query Parser example in Lucene 3.0
From:       syedfa <fayyazuddin () gmail ! com>
Date:       2009-12-23 19:33:41
Message-ID: 26906400.post () talk ! nabble ! com
[Download RAW message or body]


Ignore the previous message, I realized that I just needed to choose the
right combination to get a result!

Thanks again for your time and patience.
Take care.
Sincerely;
Fayyaz



syedfa wrote:
> 
> Thanks very much for your kind reply, and for pointing out my mistake.  I
> made the correction, (I can't believe I left that line out!)  This was a
> total oversight on my part.  Having said that, after making the change, I
> re-ran the application, but now I'm getting no results to appear.  I've
> tried entering "java" for the job description field, and I've tried
> entering "lucene" also, while arbitrarily choosing "permanent", and
> selecting the various locations (north, south, east, west).  Any reason
> why that would be?  I walked through the code, and found that in the
> following block:
> 
> 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);
> 				}
> 			}
> 
> 
> In the above code block, when I create my TopDocs object, using the
> debugger in eclipse, I see that the value of totalHits is 0, and scoreDocs
> has a value of ScoreDoc[0].  Because of this, my Document[] results array
> is created with a zero index, and therefore nothing gets returned to the
> user.  I can't see why this is, since I'm using "java", "lucene", "HTML"
> as keywords in the search field.
> 
> Can you see where I'm going wrong?
> 
> Thanks again for your help.  I truly appreciate it.
> 
> Fayyaz
> 
> 
> markharw00d wrote:
> > 
> > Hi Fayyaz,
> > 
> > > > I have found an error in the web.xml file,
> > 
> > Good job!  I found an error in your code so that makes us even :)
> > 
> > It looks like you removed the line in the "openExampleIndex" method which
> > opens the searcher. 
> > That explains your null pointer.
> > 
> > The problem you found in the web.xml isn't actually an error but is
> > potentially misleading. In the "UserQuery" tag in the XSL there is a
> > "fieldName" tag which is set to "description". The "jobDescription"
> > default fieldname passed to the XML parser would only be in effect for
> > any <UserQuery> tags that didn't specify a fieldName..
> > 
> > BTW, in the source distribution there are full "DTDdocs" for the XML
> > syntax in contrib\xml-query-parser\docs
> > 
> > Cheers
> > Mark
> > 
> > 
> > ----- Original Message ----
> > From: syedfa <fayyazuddin@gmail.com>
> > To: java-user@lucene.apache.org
> > Sent: Wed, 23 December, 2009 5:03:00
> > Subject: Re: Need help with XML Query Parser example in Lucene 3.0
> > 
> > 
> > I have found an error in the web.xml file, however, this DID NOT fix the
> > problem.  Inside the web.xml file, there is the following snippet:
> > 
> > <init-param>
> > <description>
> > Default field used in standard Lucene QueryParser used in
> > UserQuery
> > tag</description>
> > <param-name>defaultStandardQueryParserField</param-name>
> > <param-value>jobDescription</param-value>
> > </init-param>
> > 
> > the <param-value> here should be IMHO "description", as neither the
> > query.xsl file, nor index.jsp file contain any tags/values called
> > "jobDescription", only "description".  I hope the contributors to the
> > Lucene
> > project take note of this, or please show me the error of my ways. 
> > Having
> > said that, as I mentioned earlier, despite making this correction, I am
> > still getting the above "NullPointerException".  Can anyone see where I
> > am
> > going wrong?
> > 
> > Thanks again to all who reply.
> > Sincerely;
> > Fayyaz
> > 
> > syedfa wrote:
> > > 
> > > 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-tp26896711p26897607.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
> > 
> > 
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: java-user-unsubscribe@lucene.apache.org
> > For additional commands, e-mail: java-user-help@lucene.apache.org
> > 
> > 
> > 
> 
> 

-- 
View this message in context: \
http://old.nabble.com/Need-help-with-XML-Query-Parser-example-in-Lucene-3.0-tp26896711p26906400.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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic