Я проверил функциональность поиска, которую я реализовал на живом веб-сайте. Я столкнулся с некоторыми небольшими проблемами. Я не могу поместить специальные символы в поле поиска, иначе мое приложение упадет.
Я пытался решить эту проблему, используя некоторые замены для персонажей, на которых он падает, но это не излечит боль.
Когда я ввел этот знак: * в поле поиска, он дал мне следующую ошибку:
Невозможно разобрать '<%%> echo; ': '' или '?' не допускается в качестве первого символа в WildcardQuery. Я имел эту ошибку раньше, а затем удалил пробелы между всеми словами. Ошибка исчезла. Однако, когда я теперь заменю это: * этим: "" я получу ошибку, описанную выше.
Есть ли какой-нибудь стандартный способ решить проблему со специальными символами?
Я напишу здесь часть своего кода, чтобы получить более качественную обратную связь.
Analyzer analyzer = new StandardAnalyzer();
QueryParser qpContent = new QueryParser(Index.ContentFieldName, analyzer);
keyword.Trim();
keyword = keyword.Replace("\"", "");
keyword = keyword.Replace("^", "");
keyword = keyword.Replace("*", "");
Query queryContent = qpContent.Parse(keyword + "*");
QueryParser qpLanguage = new QueryParser("language", analyzer);
Query queryLanguage = qpLanguage.Parse(Sitecore.Context.Language.Name.ToString());
Как вы видите, я сначала заменяю *, а затем добавляю его обратно в анализатор запросов. Я не на 100% знаком с такой функциональностью и, следовательно, понятия не имею, что я делаю неправильно. Вся помощь очень ценится, спасибо!