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]