2009-02-15 5 views
8

Могу ли я увеличить различные поля в MultiFieldQueryParser с различными факторами? Кроме того, каково максимальное значение коэффициента усиления, которое я могу присвоить полю?Коэффициент усиления в MultiFieldQueryParser

Спасибо тонну! Ed

ответ

12

MultiFieldQueryParser имеет [конструктор] [1], который принимает карту усилений. Вы можете использовать его с чем-то вроде этого:

String[] fields = new String[] { "title", "keywords", "text" }; 
HashMap<String,Float> boosts = new HashMap<String,Float>(); 
boosts.put("title", 10); 
boosts.put("keywords", 5); 
MultiFieldQueryParser queryParser = new MultiFieldQueryParser(
    fields, 
    new StandardAnalyzer(), 
    boosts 
); 

Что касается максимального усиления, я не уверен, но вы не должны думать о повышении в абсолютном выражении в любом случае. Просто используйте коэффициент усиления, который имеет смысл. Также см. this question.

[1]: https://lucene.apache.org/core/4_4_0/queryparser/org/apache/lucene/queryparser/classic/MultiFieldQueryParser.html#MultiFieldQueryParser(org.apache.lucene.util.Version, java.lang.String [], org.apache.lucene.analysis.Analyzer, java.util.Map)

+0

Привет, спасибо за Ваш ответ .... Я использую Lucene .net version 2.0.0.4 Я не вижу конструктора MultiFieldQueryParser, принимающего значения повышения. MultiFieldQueryParser multiFieldQueryParser = new MultiFieldQueryParser (поля, _анализатор); Могу я узнать, какую версию Lucene вы используете? Спасибо. –

+0

Параметр boosts был доступен только в Lucene 2.4. Если вы не можете обновить, вы можете рассмотреть возможность копирования кода в свой собственный MyMutliFieldQueryParser. Это не так много кода. – itsadok

+0

Возможно, вам придется переносить код из java ... Я не смог найти исходный код lucene.net в Интернете (svn.apache.org не работает ATM). – itsadok

Смежные вопросы