Lucene的索引忽略撇号(Lucene Indexing to ignore apostrophe

2019-09-19 00:51发布

我有可能会在撇号它的字段。 我希望能够:1店值是在索引2,搜索基于忽略任何撇号的值。

我想使用的:

   doc.add(new Field("name", value, Store.YES, Index.NO));
   doc.add(new Field("name", value.replaceAll("['‘’`]",""), Store.NO, Index.ANALYZED));

如果我那么做同样的替代搜索时我想它应该工作,并使用清除值索引/搜索和值用于显示。

我错过任何其他方面的考虑吗?

Answer 1:

表演replaceAll在Lucene的直接价值的一种不好的做法,因为这将更好的做法来包装符号化的食谱中的Analyzer 。 此外,我没有看到你的使用情况追加字段(见的好处Document.add )。

如果你想存储的原始值,但可以搜索没有撇号只需声明你的领域是这样的:

doc.add(new Field("name", value, Store.YES, Index.ANALYZED);

然后简单地挂上一个自定义的Tokenizer将取代单引号(我认为Lucene的StandardAnalyzer已经包含了这种转变)。

如果你是存储用突出的目标领域,你也应该考虑使用Field.TermVector.WITH_POSITIONS_OFFSETS



文章来源: Lucene Indexing to ignore apostrophes
标签: lucene