Я использую Lucene 5.1.0, я хочу, чтобы мой индексный писатель только индексировал термины, начинающиеся с заглавной буквы. Я посмотрел на пользовательские анализаторы и токензатор шаблонов, но я не мог понять, как их использовать, чтобы индексировать только слова, которые начинаются (или все буквы) с большой буквы. Любая помощь будет оцененаКак использовать шаблонный токенизатор для индексирования только слов, начинающихся с заглавной буквы в lucene
1
A
ответ
4
Я нашел эту ссылку полезной для упаковки мою голову вокруг пользовательских tokenizers/Анализаторы/фильтры: http://www.citrine.io/blog/2015/2/14/building-a-custom-analyzer-in-lucene
Однако в вашем случае я думаю, что это легче расширить org.apache.lucene.analysis.util.FilteringTokenFilter
вместо TokenFilter
:
public class StartsWithCapitalTokenFilter extends FilteringTokenFilter {
private final CharTermAttribute termAtt = addAttribute(CharTermAttribute.class);
public StartsWithCapitalTokenFilter(TokenStream tokenStream) {
super(tokenStream);
}
@Override
public boolean accept() {
// When accept() is called, my understanding is that termAtt.buffer() will
// contain the particular string (in char[] form) of whichever token
// is under consideration. This call gets the Unicode code point of the
// first character and checks if it's uppercase.
return Character.isUpperCase(Character.codePointAt(termAtt.buffer(),0));
// Or if you don't want to care about Unicode about U+FFFF, use the below.
//return Character.isUpperCase(termAtt.buffer()[0]);
}
}
Для этого вам понадобится какой-то пользовательский анализатор, чтобы использовать фильтр. Это один использует только новый фильтр:
public class StartswithCapitalAnalyzer extends Analyzer {
@Override
protected TokenStreamComponents createComponents(String field, Reader reader) {
Tokenizer tokenizer = new StandardTokenizer();
TokenStream filter = new StartsWithCapitalTokenFilter(tokenizer);
// chain any other filters you want in here, like so:
//filter = new LowerCaseFilter(filter);
return new TokenStreamComponents(tokenizer, filter);
}
}
Это все должно быть функциональным, хотя у меня нет условий, чтобы проверить это прямо сейчас. Удачи!
Смежные вопросы
- 1. Регулярное выражение для получения слов, начинающихся с заглавной буквы
- 2. Найти n слов, начинающихся с заглавной буквы до 2 слов прописных букв (regex)
- 3. AutoCompleteTextView Выбор слов, начинающихся с буквы, напечатанной
- 4. Lucene - пользовательский анализатор/токенизатор для индексирования значений пары ключей JSON
- 5. Количество слов, начинающихся с буквы Python
- 6. Как использовать токенизатор ngram в lucene 4.0?
- 7. Как использовать токенизатор ngram в lucene 5.0?
- 8. Создайте функцию для заглавной буквы первой буквы только в строке
- 9. java-программа для подсчета количества слов, начинающихся с заглавных букв
- 10. Как использовать строковый токенизатор для удаления слов из списка слов?
- 11. document.onkeydown Клавиатура Вход только с заглавной буквы
- 12. Как запустить двоичный поиск слов, начинающихся с определенной буквы?
- 13. Как использовать регулярное выражение для поиска _ [az] и Заменить с помощью только заглавной буквы строчной буквы
- 14. заглавной буквы, совпадающие с шаблоном
- 15. Map reduce- Количество слов, начинающихся с буквы az
- 16. Как настроить токенизатор ngram для поиска слов с периодами
- 17. Кодировка URL с заглавной буквы
- 18. Найти и удалить из строки слов, начинающихся с буквы А
- 19. индексирования и поиск по уровню слов аннотаций Слоев в Lucene
- 20. Извлечь один или несколько последовательных слов с первой заглавной буквы
- 21. Код для обнаружения всех слов, начинающихся с большой буквы в строке
- 22. Использование sed или tr для заглавной буквы последней буквы слов, начинающейся с указанного символа/выражения
- 23. Удалите любые строки, начинающиеся с заглавной буквы
- 24. Как использовать отдельные буквы для форматирования слов
- 25. Java - поиск слов, имеющих более 1 заглавной буквы
- 26. заглавной буквы после пунктуации
- 27. Печать письма с заглавной буквы
- 28. preg_replace с заглавной буквы после цитаты
- 29. поиска Lucene работает только маленькие буквы
- 30. Как использовать Lucene для индексирования и поиска текстовых файлов?
Это прекрасно! Большое спасибо! только то, что я искал –