0

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

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

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

4

2 回答 2

4

您在评论中描述的情况表明您正在使用带有词干分析器的分析器。可能是EnglishAnalyzer(其中包含一个PorterStemmer)。与其完全没有分析器,否则会导致未标记的字段,使搜索变得困难,我会研究没有 Stem 的分析器。

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

如果你真的想不用分析器,只需使用StringField绕过任何标记化或分析。

于 2013-06-11T16:18:41.007 回答
1

我建议使用包含默认分析器的文档的字段和带有WhitespaceAnalyzer的字段构建索引

你可以创建这个usign http://lucene.apache.org/core/4_0_0-BETA/analyzers-common/org/apache/lucene/analysis/miscellaneous/PerFieldAnalyzerWrapper.html

如果您需要精确搜索,请使用 whitespacetokenizer 在字段中搜索,否则使用包含由分析器处理的文本的字段

于 2013-06-11T13:00:28.200 回答