【问题标题】:How WordDelimiterFilterFactory to search by token with digits?WordDelimiterFilterFactory 如何按数字标记搜索?
【发布时间】:2017-09-18 15:14:59
【问题描述】:

我有以下配置:

@AnalyzerDef(name = "autocompleteNGramAnalyzer",

// Split input into tokens according to tokenizer
tokenizer = @TokenizerDef(factory = StandardTokenizerFactory.class),

filters = {
    // Normalize token text to lowercase, as the user is unlikely to
    // care about casing when searching for matches
    @TokenFilterDef(factory = WordDelimiterFilterFactory.class),

    @TokenFilterDef(factory = LowerCaseFilterFactory.class),
    @TokenFilterDef(factory = EdgeNGramFilterFactory.class, params = {
        @Parameter(name = "minGramSize", value = "2"),
        @Parameter(name = "maxGramSize", value = "5") }) })

这几乎可以按预期工作,但包含数字的单词会出现问题。

例如:

byabtoken lucene 返回abcdefg,但如果我需要找到 a1a1b1c1d1 它不返回任何东西

如何更改此配置?

【问题讨论】:

    标签: java indexing lucene hibernate-search


    【解决方案1】:

    除非您有其他未提及的要求,否则您应该尝试删除WordDelimiterFilterFactory,或者如果您确实需要它的某些功能,至少应该正确配置它(特别是将preserveOriginal 设置为1)。

    默认情况下,我认为WordDelimiterFilter"a1b1c1d1" 转换为["a", "1", "b", "1", "c", "1", "d", "1"],我怀疑这在“自动完成”字段中是否有用。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2015-04-26
    • 2019-01-05
    • 2017-07-20
    • 2010-10-18
    • 1970-01-01
    相关资源
    最近更新 更多