Lucene不匹配具有较高字符的字符串

Lucene不匹配具有较高字符的字符串

问题描述:

我正在使用Lucene搜索引擎(v36)和StandardAnalyzer。我使用MultiFieldQueryParser。Lucene不匹配具有较高字符的字符串

我的一个字段被设置为NOT_ANALYZED,因为它是包含字母数字字符和点的版本名称。当此字段包含上部字符时,搜索找不到结果。任何想法 ?

详情:

该字段包含类似的值:

  • version1.26.12.test.a
  • version1.26.12.test.b
  • V1.2
  • VERSION1。虚拟

我的搜索正在返回上面三个第一个例子,但不是最后一个例子。

除了我用Collections.emptySet()绕过标准停用词外,我还没有自定义Lucene。

非常感谢。 Dimitri

我相信如果您将某个字段标记为NOT_ANALYZED,则将其保存为原样,但StandardAnalyzer使用LowerCaseFilter(和其他请参阅链接)。因此,如果您搜索“version1.Dummy”,那么您的查询字符串可能是“version1.dummy”,它不会与存储的字符串匹配。

+0

嗨,谢谢你的回答。这是有道理的,但不幸的是它并没有解决问题。搜索version1.dummy不会检索任何数据,但version1.?ummy会。我该怎么办 ? – daiquiri33

+1

你应该确保你的查询字符串不会抛出任何'QueryAnalyzer',如果该字段是NOT_ANALYZED。 – dolbi