有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Lucene文本字段未标记化

我正在将以下标题保存到索引中

doc.add(new TextField(TITLE, "Button",Field.Store.YES ));

然后,当我用say“butto”搜索它时,什么也没有返回。我必须搜索“按钮”才能取回任何东西。我必须做什么才能使按钮的任何子字符串都给出结果?我正在使用

 StandardAnalyzer analyzer = new StandardAnalyzer();

共 (1) 个答案

  1. # 1 楼答案

    StandardAnalyzer只为输入文本创建标记button,因此,只有对button的查询与文档匹配。 要搜索按钮的任何子字符串,有两个选项

    在搜索时,您可以使用不同的查询,例如aPrefixQuery或aWildcardQuery。如果使用查询解析器,则可以使用butto?butto*

    在索引时,您可以使用不同的分析器,该分析器将子字符串作为标记来发射,例如EdgeNGramTokenizer,它将根据配置发射[bu, but, butt, butto, button];或者NGramTokenizer,它将为配置的大小发出[bu, ut, tt, to, on]等等