【问题标题】:Parsing non-alphanumeric characters in QueryParser在 QueryParser 中解析非字母数字字符
【发布时间】:2013-06-07 10:04:59
【问题描述】:

我正在使用 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

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

有没有更好的函数可以解释查询字符串中的这些字符?

【问题讨论】:

    标签: c++ lucene


    【解决方案1】:

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

    【讨论】:

    • 谢谢,我会再看一遍看看。现在至少我打算反转条件,因为要替换的集合要小得多:if ((*pos == L'[') || ... ) (*pos) = L' ';
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多