【发布时间】:2011-12-01 17:53:48
【问题描述】:
我有一个字段,我想将其视为单个字符串,同时从中删除所有非字母数字字符。
例如,我想将“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*”等。我错过了什么?
谢谢
【问题讨论】:
标签: java regex lucene indexing hibernate-search