Hi

Does anyone know why Lucene returns 0 hits when there are in fact three
matches? The attached are two java class that repeat the problem. In the
example, I created a Keyword field "type" for each document added. Lucene
can correctly find the documents if I use "Text" field instead of "Keyword"
field.


Thanks in advance
Fred

package test;

import java.io.IOException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;

public class IndexItems {
  public static void main(String[] args) throws IOException {
    try {
      IndexWriter writer = new IndexWriter("/test/index", new
StandardAnalyzer(), true);
      indexDocs(writer);

      writer.optimize();
      writer.close();

      System.out.println("index finished.");

    } catch (IOException e) {
      System.out.println(" caught a " + e.getClass() +
       "\n with message: " + e.getMessage());
    }
  }

  private static void indexDocs(IndexWriter writer)
    throws IOException {
    Document document=new Document();

    document.add(Field.Keyword("type", "stockSingle"));
    document.add(Field.Text("desc", "test single 1"));
    writer.addDocument(document);

    document=new Document();
    document.add(Field.Keyword("type", "stockSingle"));
    document.add(Field.Text("desc", "test single 2"));
    writer.addDocument(document);

    document=new Document();
    document.add(Field.Keyword("type", "stockItem"));
    document.add(Field.Text("desc", "test single 3"));
    writer.addDocument(document);
  }
}

package test;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.QueryFilter;
import org.apache.lucene.search.Hits;
import org.apache.lucene.queryParser.QueryParser;

public class SearchItems {
  public static void main(String[] args) {
    try {
      Searcher searcher = new IndexSearcher("/test/index");
      QueryParser qp=new QueryParser("type", new StandardAnalyzer());
      Query query=qp.parse("type:stockSingle");

      Hits hits = searcher.search(query);
      System.out.println("search found: "+hits.length() + " total matching
documents");

      searcher.close();
    } catch (Exception e) {
      System.out.println(" caught a " + e.getClass() +
                         "\n with message: " + e.getMessage());
    }
  }
}




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to