[
https://issues.apache.org/jira/browse/LUCENE-4049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13273525#comment-13273525
]
Michael Wyraz commented on LUCENE-4049:
---------------------------------------
Robert, could you please explain it a bit more (maybe with the code above)? I
wonder why PrefixQuery behaves unlike the other query types there.
> PrefixQuery (or it's superclass MultiTermQuery) ignores index time boosts
> -------------------------------------------------------------------------
>
> Key: LUCENE-4049
> URL: https://issues.apache.org/jira/browse/LUCENE-4049
> Project: Lucene - Java
> Issue Type: Bug
> Components: core/search
> Affects Versions: 3.5, 3.6
> Environment: Java
> Reporter: Michael Wyraz
>
> It is possible to set boost to fields or documents during indexing, so
> certain documents can be boostes over others. This works well with TermQuery
> or FuzzyQuery but not with PrefixQuery which ignores the individual values.
> Test Code below:
> import java.io.IOException;
> import org.apache.lucene.analysis.standard.StandardAnalyzer;
> import org.apache.lucene.document.Document;
> import org.apache.lucene.document.Field;
> import org.apache.lucene.index.IndexReader;
> import org.apache.lucene.index.IndexWriter;
> import org.apache.lucene.index.IndexWriterConfig;
> import org.apache.lucene.index.Term;
> import org.apache.lucene.search.IndexSearcher;
> import org.apache.lucene.search.PrefixQuery;
> import org.apache.lucene.search.Query;
> import org.apache.lucene.search.ScoreDoc;
> import org.apache.lucene.search.TopScoreDocCollector;
> import org.apache.lucene.store.Directory;
> import org.apache.lucene.store.RAMDirectory;
> import org.apache.lucene.util.Version;
> import com.evermind.tools.calendar.StopWatch;
> public class LuceneTest
> {
> public static void main(String[] args) throws Exception
> {
> Directory index=new RAMDirectory();
> StandardAnalyzer analyzer=new StandardAnalyzer(Version.LUCENE_35);
> IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_35,
> analyzer);
>
> IndexWriter w = new IndexWriter(index, config);
> addDoc(w, "Hello 1",1);
> addDoc(w, "Hello 2",2);
> addDoc(w, "Hello 3",1);
> w.close();
> StopWatch.stop();
>
> IndexReader reader = IndexReader.open(index);
> IndexSearcher searcher = new IndexSearcher(reader);
>
> // Query q = new TermQuery(new Term("f1","hello"));
> Query q = new PrefixQuery(new Term("f1","hello"));
>
> TopScoreDocCollector collector = TopScoreDocCollector.create(10,
> true);
> searcher.search(q, collector);
> for (ScoreDoc hit: collector.topDocs().scoreDocs)
> {
> Document d = searcher.doc(hit.doc);
> System.err.println(d.get("f1")+" "+hit.score+" "+hit.doc);
> }
> }
>
> private static void addDoc(IndexWriter w, String value, float boost)
> throws IOException
> {
> Document doc = new Document();
> doc.add(new Field("f1", value, Field.Store.YES,
> Field.Index.ANALYZED));
> doc.setBoost(boost);
> w.addDocument(doc);
> }
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]