Doug,

The query results are different, I'm attaching my test code.

>> Also FYI, I found that phrase queries don't work against a field 
>> that's been added multiple times. If I query the phrase "brown fox", 
>> against the two example docs above, only the second matches.

>They should work the same.  I'm not sure what Field.indexed does. 
>That's not a normal Lucene method.

>Doug

Here's my test code  (my results follow it):
------------------------------------------------------------------------
---

package lucenetest;


import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.analysis.SimpleAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;

import org.apache.lucene.search.Query;
import org.apache.lucene.search.Hits;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.PhraseQuery;
import org.apache.lucene.index.Term;



import java.io.File;
import java.io.IOException;
import java.io.FileReader;

public class test {
    public static void test(File indexDir) throws IOException {

        IndexWriter writer = new IndexWriter(indexDir, new
SimpleAnalyzer(), true);
        //indexDirectory(writer, dataDir);

        Document doc = new Document();
        doc.add(Field.Text("contents", "the"));
        doc.add(Field.Text("contents", "quick"));
        doc.add(Field.Text("contents", "brown"));
        doc.add(Field.Text("contents", "fox"));
        doc.add(Field.Text("contents", "jumped"));
        doc.add(Field.Text("contents", "over"));
        doc.add(Field.Text("contents", "the"));
        doc.add(Field.Text("contents", "lazy"));
        doc.add(Field.Text("contents", "dogs"));
        doc.add(Field.Keyword("docnumber", "1"));
        writer.addDocument(doc);
        doc = new Document();
        doc.add(Field.Text("contents", "the quick brown fox jumped over
the lazy dogs"));
        doc.add(Field.Keyword("docnumber", "2"));
        writer.addDocument(doc);
        writer.close();
    }

    public static void query(File indexDir) throws IOException
    {
        Query query = null;
        PhraseQuery pquery = new PhraseQuery();
        Hits hits = null;

        try {
            query = QueryParser.parse("quick brown", "contents", new
StandardAnalyzer());
        } catch (Exception qe) {System.out.println(qe.toString());}
        if (query == null) return;
        System.out.println("Query: " + query.toString());
        IndexReader reader = IndexReader.open(indexDir);
        IndexSearcher searcher = new IndexSearcher(reader);

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

        for (int i = 0; i < hits.length(); i++)
        {
            System.out.println( hits.doc(i).get("docnumber") + " ");
        }


        pquery.add(new Term("contents", "quick"));
        pquery.add(new Term("contents", "brown"));
        System.out.println("PQuery: " + pquery.toString());
        hits = searcher.search(pquery);
        System.out.println("Phrase Hits: " + hits.length());
        for (int i = 0; i < hits.length(); i++)
        {
            System.out.println( hits.doc(i).get("docnumber") + " ");
        }

        searcher.close();
        reader.close();

    }
    public static void main(String[] args) throws Exception {
        if (args.length != 1) {
            throw new Exception("Usage: " + test.class.getName() + "
<index dir>");
        }
        File indexDir = new File(args[0]);
        test(indexDir);
        query(indexDir);
    }
}

------------------------------------------------------------------------
-------
My results:
Query: contents:quick contents:brown 
Hits: 2 
1  
2  
PQuery: 
contents:"quick brown" 
Phrase Hits: 1 
2 


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

Reply via email to