混合分析仪会改变结果吗?在Lucene得分?

时间:2016-11-04 16:32:35

标签: java indexing lucene analyzer

我正在使用Apache Lucene的版本4.4

在我的系统的第一个版本中,我将带有SpanishAnalyzer的文档集合编入五个不同的字段。

在当前版本中,我意识到SpanishAnalyzer阻止了我的名字和姓氏,Martinez和Martin对于该系统来说是相同的。因此,我使用PerFieldAnalyzerWrapper来维护SpanishAnalyzer作为默认分析器,并使用另一个名称对名称进行索引,即StopAnalyzer

这是有效的,并且名称和姓氏不会被阻止。搜索者具有相同的PerFieldAnalyzerWrapper分析器。

但是,分数计算与第一个版本不同。它会产生奇怪的事情(是的,我有一个更好的解释)。似乎混合分析器会给某些字段带来更多分数(当每个字段都有boost 1时)。我在混合BooleanQueries时也尝试了类似的东西。  (BooleanQuery(BooleanQuery(A or B) or C))

是否有人知道这些混合物(分析器或BooleanQueries)是否应该改变分数?

版本1 名称为

Analyzer analyzer = new SpanishAnalyzer(LUCENE_VERSION);
IndexWriterConfig iwc = new IndexWriterConfig(LUCENE_VERSION, analyzer);

Scores

版本2 名称未被阻止

Map<String,Analyzer> specificAnalyzers = new HashMap<String,Analyzer>();
/* Author field has a stop analyzer so that names and surnames
 * are not stemmed, and Martinez is not the same as Martin. */
specificAnalyzers.put(AUTHOR_FIELD, new StopAnalyzer(LUCENE_VERSION));
PerFieldAnalyzerWrapper analyzer = new PerFieldAnalyzerWrapper(
    new SpanishAnalyzer(LUCENE_VERSION), specificAnalyzers);
IndexWriterConfig iwc = new IndexWriterConfig(LUCENE_VERSION, analyzer);

Scores

0 个答案:

没有答案