在 Lucene 内部搜索原始文本而不使用任何分析器

Lon*_*guy 1 java lucene

我有一个使用分析器构建的 Lucene 索引。我使用索引来搜索内容,在大多数情况下我需要一个分析器。

现在,在少数情况下,假设我只想在字段中查找文本而不受分析器的影响,是否仍然可以查看相同索引的字段?我应该如何构建查询?

如果我使用通配符查询,它仍然会在分析的文本中查找,而我想在原始文本中进行搜索。

fem*_*gon 5

您在评论中描述的情况表明您正在使用带有词干分析器的分析器。可能是EnglishAnalyzer(包含PorterStemmer)。我不会完全不使用分析器,因为这会导致字段未标记化,从而使搜索变得困难,我会研究不使用 Stem 的分析器。

  • StandardAnalyzer- 一个很好的标准,实现了unicode 标准文本分割,很大程度上是非特定于语言的。
  • SimpleAnalyzer- 如所示的一个非常简单的分析仪。将其标记为一组连续的字母,并将它们转为小写。警告:此分词器会丢失数字!
  • WhitespaceAnalyzer- 也非常简单,简单地在空白周围创建标记。不会小写或以其他方式标准化标记。这通常太简单而无用。
  • ClassicAnalyzer- 实现了 3.X 中以前的 StandardAnalyzer 的逻辑。仍然是一个有用的分析器。

如果您确实不想使用分析器,只需使用即可StringField绕过任何标记化或分析。