У меня есть поле, которое я хотел бы рассматривать как одну строку, удаляя из нее все небуквенно-цифровые символы.
Например, я хотел бы токенизировать «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*» и т. д. Что мне не хватает?
Спасибо