У меня есть поле, которое я хотел бы рассматривать как одну строку, при этом удаляя из нее все не алфавитно-цифровые символы.
Например, я хотел бы маркировать "123 456.78-9" как "123456789". Для этого я пытался определить свой собственный анализатор. Согласно странице solr, KeywordTokenizerFactory будет обрабатывать строку как один термин, и я могу использовать PatternReplaceFilterFactory для удаления символов, как я собираюсь.
Я использую следующее определение в своем коде, и оно не работает:
@AnalyzerDef(name = "strippinganalyzer",
tokenizer = @TokenizerDef(factory = KeywordTokenizerFactory.class),
filters = {
@TokenFilterDef(factory = PatternReplaceFilterFactory.class,
params = {
@org.hibernate.search.annotations.Parameter(name = "pattern", value="([^a-zA-Z0-9])"),
@org.hibernate.search.annotations.Parameter(name="replacement", value=""),
@org.hibernate.search.annotations.Parameter(name="replace", value="all")
}
)
})
Это соответствует «123 *», но не «1234 *» и т. Д. Что мне не хватает?
Спасибо