я могу сделать полнотекстовый поиск, включая специальные символы? - PullRequest
1 голос
/ 10 ноября 2011

Я использую иронию для полнотекстового поиска в приложении c #, которое отлично работает. Теперь мне нужно, чтобы я искал текст, включающий некоторые специальные символы, такие как [,],;, ~, ', \, /, <,>,,. Когда я выполняю поиск по указанным выше специальным символам, появляется сообщение об ошибке «Синтаксическая ошибка, ожидаемая: - & () Phrase StringLiteral Term | ~ <, а не или (состояние синтаксического анализатора: S5)». </p>

Можно ли выполнить полнотекстовый поиск, включая специальные символы?

Это мой код, в котором во время этого вызова возникает ошибка: _compiler.Parse (_compilerContext, source);

private void ConvertQuery()
{
    // Define Grammer
    SearchGrammar _grammar = new SearchGrammar();

    LanguageCompiler _compiler = new LanguageCompiler(_grammar);
    CompilerContext _compilerContext = new CompilerContext(_compiler);
    _compilerContext.Options |= CompilerOptions.MatchBraces | CompilerOptions.CollectTokens;

    if (_compiler.Grammar.FlagIsSet(LanguageFlags.SupportsInterpreter))
    {
        _compilerContext.Options |= CompilerOptions.AnalyzeCode;
    }

    // Parse each token to construct the SQL command.
    foreach (SearchToken token in tokens)
    {
        if (!token.IsDefined) continue;

        SourceFile source = new SourceFile(token.RawText, "Source", 8);
        AstNode root = _compiler.Parse(_compilerContext, source);

        string parseError = CheckParseErrors(_compilerContext);
        if (parseError != string.Empty)
        {
            token.ParseErrorMessage = parseError;
            token.IsParseError = true;
        }
        else
        {
            token.SQLText = SearchGrammar.ConvertQuery(root, SearchGrammar.TermType.Exact, token);
        }
    }
}
...