我在我的索引和搜索项目中使用Lucene 3.6和 StandardAnalyzer 。这样的分析器通过所有特殊字符(@,#, - ,_)分割搜索查询字符串。
例如:如果我要搜索“somename@gmail.com#2nd place”,tokenizer会创建这样的查询字符串: [somename] [gmail] [com] [2nd] [place] 。但是我需要像这样的字符串: [somename @ gmail] [com] [#2nd] [place] 。
那么如何从停止字符中排除这样的特殊字符?
还有一个问题:我需要使用新的分析器重新编制索引,或者只使用旧索引的新分析器吗?
谢谢!
答案 0 :(得分:1)
StandardAnalyzer
使用StandardTokenizer
来定义语法规则(分词等)。后者Documentation说:
许多应用程序都有特定的tokenizer需求。如果是这个标记器 如果不适合您的申请,请考虑复制此来源 代码目录到您的项目并维护您自己的基于语法 标记生成器。
快速查看StandardTokenizer
代码我猜测从"<EMAIL>"
删除TOKEN_TYPES
可能就足够了。或许不是: - )
是的,你需要重新索引。