在QueryParser中解析非字母数字字符

时间:2013-06-06 08:23:02

标签: c++ lucene

我正在使用Lucene ++ 3.0.3开发一个前队友的代码。

有一条评论声称QueryParser无法处理“特殊字符”,并且处理此方法的一种方法是用空格替换“特殊字符”:

if (((*pos) >= L'A' && (*pos) <= L'Z') ||
    ((*pos) >= L'a' && (*pos) <= L'z') ||
    ... ||
    (*pos == L'-'))
{
    // do nothing, these are OK
} else {
    // remaining characters are []{}*
    (*pos) = L' ';
}

StandardAnalyzer是正在使用的分析器。 (谢谢Mark

我认为“特殊字符”用于组合查询或某种通配符处理,因为需要更好的术语。

是否有更好的功能可以解释查询字符串中的这些字符?

1 个答案:

答案 0 :(得分:0)

您需要查看使用的Analyzer,因为Analyzer确定使用的Tokenizer(并且Tokenizer确定哪些字符是特殊的)。