在Lucene 4.5中,如何确保在生成令牌时不忽略任何特殊字符,如/、*、^

在Lucene 4.5中,如何确保在生成令牌时不忽略任何特殊字符,如/、*、^,lucene,Lucene,我有一个简单的字符串7/f,标准标记器忽略/并生成术语向量7和f。我希望将7/f作为一个关键字,我希望建立在StandardTokenizer的基础上,但尝试修改该代码更为复杂。简单的答案是使用KeywordAnalyzer,但它将为字段值(如“7/f+8/f”)创建单个标记。如果您希望在单独的令牌中使用“7/f”和“8/f”等术语,那么您可能需要使用自己的令牌化器。在那种情况下应该做得很好StandardTokenizer在处理全文方面非常出色,但是如果它不能标记数据所使用的格式,那么就没有理

我有一个简单的字符串7/f,标准标记器忽略/并生成术语向量7和f。我希望将7/f作为一个关键字,我希望建立在StandardTokenizer的基础上,但尝试修改该代码更为复杂。

简单的答案是使用KeywordAnalyzer,但它将为字段值(如“7/f+8/f”)创建单个标记。如果您希望在单独的令牌中使用“7/f”和“8/f”等术语,那么您可能需要使用自己的令牌化器。在那种情况下应该做得很好
StandardTokenizer
在处理全文方面非常出色,但是如果它不能标记数据所使用的格式,那么就没有理由坚持使用它。我尝试使用了这两种方法,但没有得到预期的结果。我在这里的目的是尝试识别我正在索引的字符串中的所有元素(单词边界)。因此,通常,如果我使用像7/f INT STREET ROSE ROAD这样的字符串,并使用标准分析器,我会生成令牌。由于玫瑰路内大街7楼的特殊字符缺失。如果我有一个相似的字符串,但中间只有不同的字符。玫瑰路国际街7楼我也有同样的代币流。当我进行搜索时,两个都会以相同的分数返回,因为它们都有7和F。我尝试了TokenStream ts=new KeywordAnalyzer(Version.LUCENE_45,new StringReader(field));TokenStream ts=新的空白标记器(Version.LUCENE_45,新的StringReader(read_值))
FieldType fldType1=新的FieldType()
fldType1.setIndexed(true);fldType1.设置存储项向量(真);fldType.setStored(真);字段ttf=新字段(索引字段1,ts,fldType1);添加文件(ttf);但是我没有得到正确的代币。此外,我还想享受StandardTokenizer的基本功能,并在此基础上构建。也许对你有帮助。