Я делаю какой-то тест, используя WordDelimiterFilter в Solr, но он не сохраняет защищенный список слов, которые я передаю ему. Не могли бы вы проверить код и пример вывода и предложить, какая часть отсутствует или используется плохо?
с запуском этого кода:
private static Analyzer getWordDelimiterAnalyzer() {
return new Analyzer() {
@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream stream = new StandardTokenizer(Version.LUCENE_32, reader);
WordDelimiterFilterFactory wordDelimiterFilterFactory = new WordDelimiterFilterFactory();
HashMap<String, String> args = new HashMap<String, String>();
args.put("generateWordParts", "1");
args.put("generateNumberParts", "1");
args.put("catenateWords", "1");
args.put("catenateNumbers", "1");
args.put("catenateAll", "0");
args.put("luceneMatchVersion", Version.LUCENE_32.name());
args.put("language", "English");
args.put("protected", "protected.txt");
wordDelimiterFilterFactory.init(args);
ResourceLoader loader = new SolrResourceLoader(null, null);
wordDelimiterFilterFactory.inform(loader);
/*List<String> protectedWords = new ArrayList<String>();
protectedWords.add("good bye");
protectedWords.add("hello world");
wordDelimiterFilterFactory.inform(new LinesMockSolrResourceLoader(protectedWords));
*/
return wordDelimiterFilterFactory.create(stream);
}
};
}
ввод текста:
Привет, мир
до свидания
каков твой план на будущее?
защищенные строки:
до свидания
Привет, мир
* * Тысяча двадцать-одина выход:
(Привет, startOffset = 0, endOffset = 5, positionIncrement = 1, тип =)
* * +1025 (мир, startOffset = 6, endOffset = 11, positionIncrement = 1, тип =)
(хорошо, startOffset = 12, endOffset = 16, positionIncrement = 1, тип =)
* 1 029 * (до свидания, startOffset = 17, endOffset = 20, positionIncrement = 1, тип =)
(что, startOffset = 21, endOffset = 25, positionIncrement = 1, тип =)
(это, startOffset = 26, endOffset = 28, positionIncrement = 1, тип =)
(ваше, startOffset = 29, endOffset = 33, positionIncrement = 1, тип =)
* +1037 * (план, startOffset = 34, endOffset = 38, positionIncrement = 1, тип =)
* +1039 * (для, startOffset = 39, endOffset = 42, positionIncrement = 1, тип =)
(будущее, startOffset = 43, endOffset = 49, positionIncrement = 1, тип =)