Экранированная звездочка/знак запроса не исчезает при использовании начального подстановочного знака в Edismax.

Я пытаюсь найти документы, содержащие звездочки/знаки запроса в текстовом поле Solr, используя парсер Edismax. Все работает отлично, когда я ищу обычный текст (fq={!edismax}textfield:*sometext*) или даже любой другой специальный символ Lucene с экранированием (fq={!edismax}textfield:*\~*).

Однако при поиске * (fq={!edismax}textfield:*\**) или ? (fq={!edismax}textfield:*\?*) эти символы не экранируются, поскольку возвращаются все документы. Я также пробую кодирование URL для экранированных символов (например, \%2A вместо \*), однако результат то же самое.

Проблема, по-видимому, касается только ведущих подстановочных знаков, поскольку fq={!edismax}textfield:\** и fq={!edismax}textfield:\?* возвращают правильные результаты, а fq={!edismax}textfield:*\* и fq={!edismax}textfield:*\? — нет (а также fq={!edismax}textfield:*sometext\* и т. д.).

Как можно искать */? с помощью Edismax с подстановочным знаком звездочки в начале?


person dev4    schedule 02.04.2012    source источник


Ответы (1)


Цитирование звездочки работает для меня. Этот запрос находит в моем индексе две книги со звездочкой в ​​названии:

title:"*"

Вот название одного из них: «Будь * Знай * Делай, адаптировано из Официального руководства по руководству армией».

Я использую edismax с Solr 3.3.

person Walter Underwood    schedule 04.04.2012
comment
Я бы работал на меня, если бы использовал токенизатор, такой как WhitespaceTokenizerFactory. Однако мне нужно искать строгое совпадение фраз и использовать KeywordTokenizerFactory. Поэтому, чтобы найти часть текста поля, я должен использовать подстановочные знаки. - person dev4; 05.04.2012
comment
Вы должны иметь возможность получить строгое совпадение фраз, не рассматривая каждое значение поля как отдельный токен. Выполнение регулярных выражений с токенами по сути является полным сканированием таблицы. Это гарантированно не масштабируется. Я рекомендую другой подход. - person Walter Underwood; 17.04.2012