Hello,

I have a problem when i search with lucene, but i dont know if this is a
problem of my Index or my Search.
At Index, I have like parameter a list of data of an individual(the list is
with data of my Ontology Individuals)
The list has values like   "Name:PeterRooney", "Age:25", "From:NY" if the
individual is a person
but if the individual is an Event it has  "Date:20/09/2014" and the is more
types of individuals.
However, the Docs have differente keys for the type of individual , and the
Data is type String.

This is all my code for the index of the data


public class Indexer {
    public Indexer() {}

    /** Index all text files under a directory. */
    public IndexWriter CreateIndexDir(List<String> list) {
    String indexPath = "index";
    boolean create = true;

    try {
      Directory dir = FSDirectory.open(new File(indexPath));
      Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_10_0);
      IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_4_10_0,
analyzer);

      if (create) {
        // Create a new index in the directory, removing any
        // previously indexed documents:
        iwc.setOpenMode(OpenMode.CREATE);
      } else {
        // Add new documents to an existing index:
        iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
      }

      // Optional: for better indexing performance, if you
      // are indexing many documents, increase the RAM
      // buffer.  But if you do this, increase the max heap
      // size to the JVM (eg add -Xmx512m or -Xmx1g):
      //
//       iwc.setRAMBufferSizeMB(256.0);

      IndexWriter writer = new IndexWriter(dir, iwc);
      return writer;
    } catch (IOException e) {
      System.out.println(" caught a " + e.getClass() +
       "\n with message: " + e.getMessage());
      return null;
    }
    }

  public void indexDocs(IndexWriter writer, List<String> listInd)
    throws IOException {
        try {
          Document doc = new Document();
            String aux;
            int pos;
            for(int i=0;i<listInd.size();i++){
                aux = listInd.get(i);
                pos = aux.indexOf(":");
                doc.add(new StringField(aux.substring(0,
pos),aux.substring(pos+1, aux.length()),Field.Store.YES));
            }
            if (writer.getConfig().getOpenMode() == OpenMode.CREATE) {
                writer.addDocument(doc);
            } else {
            // Existing index (an old copy of this document may have been
indexed) so
            // we use updateDocument instead to replace the old one
matching the exact
            // path, if present:
//            System.out.println("updating " + file);
//            writer.updateDocument(new StringBuffer("","",doc);
            }

        } finally {
//          fis.close();
        }
      }

     public void closeWriter(IndexWriter writer) throws IOException{
      writer.close();
    }

}


When i make the search i have this code:

public class SearchEngine {
//  private IndexSearcher searcher = null;
//  private QueryParser parser = null;

  public SearchEngine(String line) throws IOException, ParseException {
    String index = "index";
    String field = "Name";
    String queries = null;
    int repeat = 1;
    boolean raw = false;
    String queryString = null;
    int hitsPerPage = 10;

    IndexReader reader = DirectoryReader.open(
FSDirectory.open(new File(index)));
    IndexSearcher searcher = new IndexSearcher(reader);
    // :Post-Release-Update-Version.LUCENE_XY:
    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_10_0);
    QueryParser parser = new QueryParser(Version.LUCENE_4_10_0, field,
analyzer);
    Query query = parser.parse(line);
    if (repeat > 0) {                           // repeat & time as
benchmark
        Date start = new Date();
        for (int i = 0; i < repeat; i++) {
          searcher.search(query, null, 100);
        }
    }


    doPagingSearch(searcher, query, hitsPerPage, raw, queries == null &&
queryString == null);
    reader.close();
  }

  public List<String> doPagingSearch(IndexSearcher searcher, Query query,
                                     int hitsPerPage, boolean raw, boolean
interactive) throws IOException {

    // Collect enough docs to show 5 pages
    TopDocs results = searcher.search(query, 1 * hitsPerPage);
    ScoreDoc[] hits = results.scoreDocs;
    List<String> result = new ArrayList<String>();
    int numTotalHits = results.totalHits;
    int start = 0;
    int end = Math.min(numTotalHits, hitsPerPage);

    while (true) {
      end = Math.min(hits.length, start + hitsPerPage);

      for (int i = start; i < end; i++) {
        if (raw) {                              // output raw format

          continue;
        }

        Document doc = searcher.doc(hits[i].doc);
        String path = doc.get("Name");
        result.add(path);
        System.out.println(path);
      }

      if (!interactive || end == 0) {
        break;
      }


        end = Math.min(numTotalHits, start + hitsPerPage);
    }
    return result;
  }
}

I call these object in this form :

Indexer ind = new Indexer();
        IndexWriter indW;
        for(int i=0;i<listaIndividuos.size();i++){
            List<String> listData = ontM.getInfo(listaIndividuos.get(i));
            indW = ind.CreateIndexDir(listData);
            ind.indexDocs(indW, listData);
            ind.closeWriter(indW);
        }

        SearchEngine sEng  = new SearchEngine("PeterRooney");



2014-09-16 5:17 GMT-05:00 atawfik <contact.txl...@gmail.com>:

> Hi,
>
> Can you elaborate more on  the confusion or doubt you have? Can you provide
> a sample of your document and query that give you the trouble?
>
> I was not able to deduce what is the problem.
>
> Regards
> Ameer
>
>
>
> --
> View this message in context:
> http://lucene.472066.n3.nabble.com/Doubt-Lucene-tp4159068p4159100.html
> Sent from the Lucene - Java Users mailing list archive at Nabble.com.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> For additional commands, e-mail: java-user-h...@lucene.apache.org
>
>

Reply via email to