вы можете перенаправить вывод времени с помощью
(time ls) &> file
Поскольку вам нужно взять (время ls) как одну команду, чтобы вы могли использовать фигурные скобки.
Ну, самая легкая вещь сделать состояла бы в том, чтобы дать необработанную форму запроса выстрел, и если это перестало работать, отступите к чистке его.
Query safe_query_parser(QueryParser qp, String raw_query)
throws ParseException
{
Query q;
try {
q = qp.parse(raw_query);
} catch(ParseException e) {
q = null;
}
if(q==null)
{
String cooked;
// consider changing this "" to " "
cooked = raw_query.replaceAll("[^\w\s]","");
q = qp.parse(cooked);
}
return q;
}
Это дает необработанную форму запроса пользователя шанс работать, но при парсинге сбоев, мы разделяем все кроме букв, чисел, пробелов и подчеркиваний; тогда мы попробовали еще раз. Мы все еще рискуем бросать ParseException, но мы решительно уменьшили разногласия.
Вы могли также рассмотреть маркирование запроса пользователя сами, превратив каждый маркер в запрос термина и glomming их вместе с BooleanQuery. Если бы Вы действительно не ожидаете, что Ваши пользователи используют в своих интересах функции QueryParser, который был бы лучшим выбором. Вы были бы абсолютно (?) устойчивы, и пользователи могли искать любые забавные символы, сделает его через Ваш анализатор
Я нахожусь в той же ситуации как Вы.
Вот то, что я делаю. Я действительно ловлю исключение, но только так, чтобы я мог совершить ошибку выглядеть более симпатичной. Я не изменяю текст.
я также предоставляю ссылку на объяснение синтаксиса Lucene, который я упростил немного:
http://ifdefined.com/btnet/lucene_syntax.html
Если Вам не нужны все функции Lucene, Вы могли бы пойти лучше путем записи собственного анализатора запроса. Это не так сложно, как это могло бы казаться во-первых.
Эй может заставить Lucene проигнорировать специальные символы путем очистки запроса с чем-то как
query = QueryParser.Escape(query)
, Если Вы не хотите, чтобы Ваши пользователи когда-либо использовали усовершенствованный синтаксис в своих запросах, можно всегда делать это.
, Если Вы хотите, чтобы Ваши пользователи использовали усовершенствованный синтаксис, но Вы также хотите быть более прощающими с ошибками, которые необходимо только санировать после того, как ParseException произошел.
_rootScope.$apply()
(сохраненный в MainController), чтобы к Угловому делают заметки от изменения. Логика переключателя находится в index.html
, последнее script
тег. И эти app.js
содержит Угловой код.
– Caio Cunha
10 April 2013 в 22:49
Я не знаю много о Lucene.net. Для генерала Lucene я настоятельно рекомендую книге Lucene в Действии . Для вопроса под рукой, это зависит от Ваших пользователей. Существуют веские причины, такие как простота использования, безопасность и производительность, для ограничения запросов пользователей. Книга показывает способы проанализировать запросы с помощью пользовательского синтаксического анализатора вместо QueryParser. Я идея второго Jay о BooleanQuery, хотя можно создать более сильные запросы с помощью пользовательского синтаксического анализатора.
К вашему сведению ... Вот код, который я использую для .NET
private Query GetSafeQuery(QueryParser qp, String query)
{
Query q;
try
{
q = qp.Parse(query);
}
catch(Lucene.Net.QueryParsers.ParseException e)
{
q = null;
}
if(q==null)
{
string cooked;
cooked = Regex.Replace(query, @"[^\w\.@-]", " ");
q = qp.Parse(cooked);
}
return q;
}