Lucene非索引字段,不区分大小写搜索?

时间:2016-01-12 15:53:49

标签: lucene lucene.net

想象一下,所有文档都包含以下字段:

Field("Id", Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO));
Field("From", Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO));
Field("To", Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO));
Field("Source", Field.Store.YES, Field.Index.NOT_ANALYZED, Field.TermVector.NO));
Field("Target", Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));

我的要求之一是,如果来自来源完全相同(不区分大小写),则重复使用这些文档。

但是,他们没有进行分析(例如,使用StandardAnalyzer,它会在编制索引之前降低条款)。

  1. 是否可以对非分析进行不区分大小写的搜索 字段?
  2. Field名称值如何,我也可以做一个案例 不敏感的搜索"来自","来自"," FROM" ?
  3. 概述: 我想执行不区分大小写的搜索。

    示例:"来自:某事","来自:Something"," FROM:SOMething"," from:SOMETHING" - >检索相同的结果集。

1 个答案:

答案 0 :(得分:1)

1 - 否。在索引之前,您始终可以自己小写字段,或者使用由KeywordTokenizerLowerCaseFilter组成的分析器对字段进行分析。你在Lucene中的索引是一个非常GIGO的操作。如果您分析和索引字段的方式无法满足您的搜索需求,那么您将度过一段艰难的时光。

2 - 再一次,不(不管我是否意识到)。您需要在代码中处理此问题。如果你只是总是使用小写字段名称,那么它应该很容易规范化它。