Ruby on Rails: как люди создают поисковые формы на сайтах с разбором разбитого текстового поля, который удаляет кавычки? - PullRequest
1 голос
/ 14 сентября 2010

Я использую поиск Sunspot Solr, который в большинстве случаев отлично работает для базового поиска.Предполагается, что он может обрабатывать кавычки вокруг фраз, поэтому при поиске test case будут возвращаться документы как с test, так и case, тогда как при поиске "test case" должны возвращаться документы с тестовым выражением фразы.

Тем не менее, я потянулся за это, потому что кажется, что Rails удаляет любые внешние кавычки из пользовательских вводов, прежде чем они попадут в поисковую систему.Таким образом, "test case" возвращает те же самые результаты, что и test case, но ""test case"" или "test case" (с начальными и конечными пробелами) фактически работают, в первом случае, потому что внешние кавычки удаляются, оставляя внутренние, и ввторой случай, потому что эта проблема затрагивает только начальные и конечные кавычки.

Очевидно, это известная ошибка, и был помечен как не исправляющий командой Rails.Я действительно удивлен, как мало я могу найти в этом онлайн, так как это кажется очень распространенной функциональностью.

Как люди обходят это?Для меня это не кажется разумным решением - попросить пользователей сделать двойные кавычки из-за этого, и я не особо хочу делать свои собственные модификации в Rack.

Ответы [ 2 ]

1 голос
/ 14 сентября 2010

По-видимому, из вышеупомянутого билета Lighthouse: «Если вы добавите символ новой строки, тогда двойные кавычки сохранятся».( Пример. )

Вы можете использовать Javascript для добавления новой строки в строку поиска.Это что-то вроде хака, но вы должны избавиться от ошибки в Rack, не оказывая негативного влияния на ваши запросы.

Быстрый пример из головы JQuery.Не проверено, ymmv и т. Д.

// append a newline to a field when submitting a form
// to work around a Rack parsing bug

$('#your_form').submit(function() {
  $('#your_input').val(function(i, val) {
    return val + "\n";
  };
});
1 голос
/ 14 сентября 2010

Хм, неужели не многие из них используют Rails-приложения, которым нужен поиск, поддерживающий кавычки?

Я обошёл это, используя патч Rack, связанный с отчетом об ошибках, пока Rails не исправит эту ошибку.1003 *

Редактировать: Добавление ссылок

Найдено на этой странице:
https://rails.lighthouseapp.com/projects/8994/tickets/4808

Прямая загрузка:
https://rails.lighthouseapp.com/projects/8994/tickets/4808/a/662679/fix_rack_110_quote_parsing.rb

Однако,это определенно не идеально, и я все еще нахожу некоторые случаи, например, заканчивающиеся завершающей кавычкой, приводящей к усечению ведущей части.

...