在分析儀使用MappingCharFilter打破通配符匹配在Lucene的4,1分析儀打破通配符爲什麼使用MappingCharFilter匹配
我創造了這個簡單的StripSpacesAndSeparatorsAnalyzer
public class StripSpacesAndSeparatorsAnalyzer extends Analyzer {
protected NormalizeCharMap charConvertMap;
protected void setCharConvertMap() {
NormalizeCharMap.Builder builder = new NormalizeCharMap.Builder();
builder.add(" ","");
builder.add("-","");
builder.add("_","");
builder.add(":","");
charConvertMap = builder.build();
}
public StripSpacesAndSeparatorsAnalyzer() {
setCharConvertMap();
}
@Override
protected TokenStreamComponents createComponents(String fieldName,
Reader reader) {
Tokenizer source = new KeywordTokenizer(reader);
TokenStream filter = new LowercaseFilter(source);
return new TokenStreamComponents(source, filter);
}
@Override
protected Reader initReader(String fieldName,
Reader reader)
{
return new MappingCharFilter(charConvertMap, reader);
}
}
,使其忽略某些字符,如連字符字段,以便我可以搜索
catno:WRATHCD25
catno:WRATHCD-25
並得到相同的結果,並且有效(該字段的原始值添加該指數爲WRATHCD-25)
但是有通配符搜索
catno:WRATHCD25*
作品的一個問題,但如果我修改了分析評論
catno:WRATHCD-25*
不
out的initReader()方法然後
catno:WRATHCD-25*
現在的作品,但當然
catno:WRATHCD25
不再起作用的。
威猛我做錯了,請
您是否將相同的分析器傳遞到['QueryParser' ctor](http://lucene.apache.org/core/4_1_0/queryparser/org/apache/lucene/queryparser/classic/QueryParser.html #QueryParser(org.apache.lucene.util.Version,%20java.lang.String,%20org.apache.lucene.analysis.Analyzer))? – femtoRgon 2013-03-25 16:53:08
是的,我通過了相同的分析器 – 2013-03-25 19:59:53