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 <[email protected]>
>> To: [email protected]
>> 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: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>>
>
>
--
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: [email protected]
For additional commands, e-mail: [email protected]