在第 1 行遇到的 Lucene 词法错误使用了错误的转义字符无法解析 <EOF>。肯蒂科 12

Using the wrong escape character for Lucene lexical error at line 1 Cannot Parse Encountered <EOF>. Kentico 12

我遇到了与以下问题类似的问题:Lucene error while parsing Query: Cannot parse '': Encountered “” at line 1, column 0,我已经尝试了所有转义。还能是什么?

我正在使用 Kentico 12 修补程序 14 及其 Lucene.NET 3.0.3 实现。我的智能搜索索引使用标准分析器,见下文:

当我使用以下 lucene 语法拉回 en-US 区域性结果时,我得到了预期的行。此语法由 Kentico 自动创建,并且需要它来检索正确的区域性。这是直接从 属性 值复制的。

"+_culture:([en-us TO en-us] [invariantifieldivaluei TO invariantifieldivaluei])"

当我添加(或单独使用)以下值时(以许多不同的形式 - 没有括号等):

 "+length:(24\")"

我总是遇到词法错误:

"Cannot parse '+_culture:([en-us TO en-us] [invariantifieldivaluei TO invariantifieldivaluei])  +length:(24\")': Lexical error at line 1, column 95.  Encountered: <EOF> after : \"\\")\""

如您所见,我相信我已经正确转义了长度值。我在这里错过了什么?

其他不需要转义的值就可以正常工作,例如:

+material:(nitrile)

关于我在 24" 值上做错了什么有什么想法吗?错误的分析器?需要 Kentico 修补程序?错误的过滤器顺序?感谢您的宝贵时间!

看来我不是第一个在 Kentico 中处理这个问题的人,并找到了以下辅助方法:CMS.Search.SearchSyntaxHelper.EscapeKeyWords(string)。我将此方法应用于我的特定搜索过滤器值,它按预期工作!父级 class 中也有很多好的方法,请查看它们。