Skip to content

Commit

Permalink
Analysis: Custom analyzer to allow to configure position_offset_gap a…
Browse files Browse the repository at this point in the history
…nd offset_gap, closes #1812.
  • Loading branch information
kimchy committed Mar 24, 2012
1 parent 8859594 commit a0a8538
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 37 deletions.
25 changes: 19 additions & 6 deletions src/main/java/org/elasticsearch/index/analysis/CustomAnalyzer.java
Expand Up @@ -20,33 +20,38 @@
package org.elasticsearch.index.analysis;

import org.apache.lucene.analysis.*;
import org.apache.lucene.document.Fieldable;

import java.io.IOException;
import java.io.Reader;

/**
*
*/
public final class CustomAnalyzer extends Analyzer implements PositionIncrementGapAnalyzer {
public final class CustomAnalyzer extends Analyzer {

private final TokenizerFactory tokenizerFactory;

private final CharFilterFactory[] charFilters;

private final TokenFilterFactory[] tokenFilters;

private int positionIncrementGap = 0;
private final int positionIncrementGap;
private final int offsetGap;

public CustomAnalyzer(TokenizerFactory tokenizerFactory, CharFilterFactory[] charFilters, TokenFilterFactory[] tokenFilters) {
this(tokenizerFactory, charFilters, tokenFilters, 0, -1);
}

public CustomAnalyzer(TokenizerFactory tokenizerFactory, CharFilterFactory[] charFilters, TokenFilterFactory[] tokenFilters,
int positionOffsetGap, int offsetGap) {
this.tokenizerFactory = tokenizerFactory;
this.charFilters = charFilters;
this.tokenFilters = tokenFilters;
this.positionIncrementGap = positionOffsetGap;
this.offsetGap = offsetGap;
}

@Override
public void setPositionIncrementGap(int positionIncrementGap) {
this.positionIncrementGap = positionIncrementGap;
}

public TokenizerFactory tokenizerFactory() {
return tokenizerFactory;
Expand All @@ -65,6 +70,14 @@ public int getPositionIncrementGap(String fieldName) {
return this.positionIncrementGap;
}

@Override
public int getOffsetGap(Fieldable field) {
if (offsetGap < 0) {
return super.getOffsetGap(field);
}
return this.offsetGap;
}

@Override
public final TokenStream tokenStream(String fieldName, Reader reader) {
return buildHolder(reader).tokenStream;
Expand Down
Expand Up @@ -32,8 +32,6 @@
/**
* A custom analyzer that is built out of a single {@link org.apache.lucene.analysis.Tokenizer} and a list
* of {@link org.apache.lucene.analysis.TokenFilter}s.
*
*
*/
public class CustomAnalyzerProvider extends AbstractIndexAnalyzerProvider<CustomAnalyzer> {

Expand Down Expand Up @@ -79,9 +77,15 @@ public void build(AnalysisService analysisService) {
tokenFilters.add(tokenFilter);
}

int positionOffsetGap = analyzerSettings.getAsInt("position_offset_gap", 0);
int offsetGap = analyzerSettings.getAsInt("offset_gap", -1);

this.customAnalyzer = new CustomAnalyzer(tokenizer,
charFilters.toArray(new CharFilterFactory[charFilters.size()]),
tokenFilters.toArray(new TokenFilterFactory[tokenFilters.size()]));
tokenFilters.toArray(new TokenFilterFactory[tokenFilters.size()]),
positionOffsetGap,
offsetGap
);
}

@Override
Expand Down

This file was deleted.

0 comments on commit a0a8538

Please sign in to comment.