Использование неправильного escape-символа для лексической ошибки Lucene в строке 1 Cannot Parse Encountered <EOF>.Кентико 12 - PullRequest
1 голос
/ 04 июня 2019

У меня похожая проблема со следующим вопросом: Ошибка Lucene при разборе запроса: Не удается проанализировать '': Обнаружено "в строке 1, столбце 0 , и я уже перепробовал все экранирование.Что еще это может быть?

Я использую исправление Kentico 12 с их реализацией Lucene.NET 3.0.3.В моем индексе интеллектуального поиска используется стандартный анализатор, см. Ниже:

enter image description here

Я получаю ожидаемые строки, когда использую следующий синтаксис lucene для откатарезультат культуры США.Этот синтаксис автоматически создается Kentico и необходим для получения правильной культуры.Это было непосредственно скопировано из значения свойства.

"+_culture:([en-us TO en-us] [invariantifieldivaluei TO invariantifieldivaluei])"

Когда я добавляю (или использую отдельно) следующее значение (во многих различных формах - без скобок и т. Д.):

 "+length:(24\")"

Я всегда получаю Лексическую ошибку:

"Cannot parse '+_culture:([en-us TO en-us] [invariantifieldivaluei TO invariantifieldivaluei])  +length:(24\")': Lexical error at line 1, column 95.  Encountered: <EOF> after : \"\\\")\""

Как вы можете видеть, я считаю, что я правильно избежал значения длины.Чего мне здесь не хватает?

Другие значения, которые не требуют просто ускользать от работы, такие как:

+material:(nitrile)

Любые мысли о том, что я делаю неправильно с 24 "значение? Неправильный анализатор? Требуется исправление Kentico? Неправильный порядок фильтров? Спасибо за ваше время!

1 Ответ

1 голос
/ 11 июня 2019

Кажется, я не первый, кто сталкивался с этим в Kentico, и нашел следующий вспомогательный метод: CMS.Search.SearchSyntaxHelper.EscapeKeyWords (string) .Я применил этот метод к определенным значениям поискового фильтра, и он работает, как и ожидалось!Также есть много хороших методов в родительском классе.

Escaped value in code

Escaped value in text visualizer

...