繁体   English   中英

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

[英]Searching inside Lucene for raw-text without using any analyzer

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

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

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

您在注释中描述的情况表明您正在使用带茎的分析仪。 可能EnglishAnalyzer (其结合了PorterStemmer )。 我会寻找没有茎的分析器,而不是完全没有分析器,这会导致字段未标记,从而使搜索变得困难。

  • StandardAnalyzer一个很好的标准,实现了unicode标准文本分段 ,主要是非语言特定的。
  • SimpleAnalyzer如所示的非常简单的分析器。 标记成连续字母的组,并将其小写。 警告:此令牌生成器会丢失数字!
  • WhitespaceAnalyzer同样非常简单,简单地在空白周围创建令牌。 不小写或以其他方式规范令牌。 这通常太简单而无用。
  • ClassicAnalyzer实现3.X中曾经是StandardAnalyzer的逻辑。 仍然是有用的分析器。

如果您确实希望没有分析器,那么只需使用StringField绕过任何标记化或分析。

我建议建立一个索引,该索引的字段包含默认分析器的文档,以及一个包含WhitespaceAnalyzer的文档

您可以创建此有用的http://lucene.apache.org/core/4_0_0-BETA/analyzers-common/org/apache/lucene/analysis/miscellaneous/PerFieldAnalyzerWrapper.html

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM