1

Lucene++ 3.0.3 を使用して元チームメイトのコードに取り組んでいます。

QueryParser が「特殊文字」を処理できないと主張するコメントがあり、これが処理された 1 つの方法は、「特殊文字」をスペースに置き換えることです。

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使用されているアナライザーです。(ありがとうマーク

「特殊文字」は、より適切な用語が必要なため、クエリまたはある種のワイルドカード処理を組み合わせるためのものだと思います。

クエリ文字列内のこれらの文字を説明できるより良い関数はありますか?

4

1 に答える 1

0

アナライザーは使用されるトークナイザーを決定するため (そして、トークナイザーはどの文字が特別であるかを決定します)、どのアナライザーが使用されているかを確認する必要があります。

于 2013-06-06T10:49:05.727 に答える