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

Lucene non indexed fields, case insensitive search?

假设所有文档都有以下字段:

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));

如果 FromToSource[=28,我的要求之一是重复使用文档=] 完全相同(不区分大小写)。

但是,它们没有被分析(例如,使用 StandardAnalyzer,它在索引之前将术语小写)。

  1. 是否可以对未分析的内容进行不区分大小写的搜索 字段?
  2. 关于Field name值呢,我也可以做个case吗 对 "From"、"from"、"FROM" ?
  3. 的不敏感搜索

概览: 我想执行不区分大小写的搜索。

示例:"From:something"、"from:Something"、"FROM:SOMething"、"from:SOMETHING" -> 检索相同的结果集。

1 - 否。您始终可以在索引之前自行将字段小写,或使用包含 KeywordTokenizer and LowerCaseFilter. How you index in Lucene is very much a GIGO 操作的分析器对其进行分析。如果您对字段进行分析和索引的方式不能满足您的搜索需求,您将遇到困难。

2 - 再一次,不(反正我不知道)。你需要在你的代码中处理这个。如果你总是使用小写的字段名称,那么规范化它应该很容易。