我有可能会在撇号它的字段。 我希望能够:1店值是在索引2,搜索基于忽略任何撇号的值。
我想使用的:
doc.add(new Field("name", value, Store.YES, Index.NO));
doc.add(new Field("name", value.replaceAll("['‘’`]",""), Store.NO, Index.ANALYZED));
如果我那么做同样的替代搜索时我想它应该工作,并使用清除值索引/搜索和值用于显示。
我错过任何其他方面的考虑吗?
表演replaceAll
在Lucene的直接价值的一种不好的做法,因为这将更好的做法来包装符号化的食谱中的Analyzer
。 此外,我没有看到你的使用情况追加字段(见的好处Document.add )。
如果你想存储的原始值,但可以搜索没有撇号只需声明你的领域是这样的:
doc.add(new Field("name", value, Store.YES, Index.ANALYZED);
然后简单地挂上一个自定义的Tokenizer
将取代单引号(我认为Lucene的StandardAnalyzer
已经包含了这种转变)。
如果你是存储用突出的目标领域,你也应该考虑使用Field.TermVector.WITH_POSITIONS_OFFSETS
。