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));
如果 From、To 和 Source[=28,我的要求之一是重复使用文档=] 完全相同(不区分大小写)。
但是,它们没有被分析(例如,使用 StandardAnalyzer,它在索引之前将术语小写)。
- 是否可以对未分析的内容进行不区分大小写的搜索
字段?
- 关于
Field
name值呢,我也可以做个case吗
对 "From"、"from"、"FROM" ? 的不敏感搜索
概览:
我想执行不区分大小写的搜索。
示例:"From:something"、"from:Something"、"FROM:SOMething"、"from:SOMETHING" -> 检索相同的结果集。
1 - 否。您始终可以在索引之前自行将字段小写,或使用包含 KeywordTokenizer and LowerCaseFilter. How you index in Lucene is very much a GIGO 操作的分析器对其进行分析。如果您对字段进行分析和索引的方式不能满足您的搜索需求,您将遇到困难。
2 - 再一次,不(反正我不知道)。你需要在你的代码中处理这个。如果你总是使用小写的字段名称,那么规范化它应该很容易。
假设所有文档都有以下字段:
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));
如果 From、To 和 Source[=28,我的要求之一是重复使用文档=] 完全相同(不区分大小写)。
但是,它们没有被分析(例如,使用 StandardAnalyzer,它在索引之前将术语小写)。
- 是否可以对未分析的内容进行不区分大小写的搜索 字段?
- 关于
Field
name值呢,我也可以做个case吗 对 "From"、"from"、"FROM" ? 的不敏感搜索
概览: 我想执行不区分大小写的搜索。
示例:"From:something"、"from:Something"、"FROM:SOMething"、"from:SOMETHING" -> 检索相同的结果集。
1 - 否。您始终可以在索引之前自行将字段小写,或使用包含 KeywordTokenizer and LowerCaseFilter. How you index in Lucene is very much a GIGO 操作的分析器对其进行分析。如果您对字段进行分析和索引的方式不能满足您的搜索需求,您将遇到困难。
2 - 再一次,不(反正我不知道)。你需要在你的代码中处理这个。如果你总是使用小写的字段名称,那么规范化它应该很容易。