Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4395
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Ошибка WildcardQuery в Solr
Я использую solr для поиска документов, и при попытке поиска документов с помощью этого запроса " id:* ", я получаю это исключение синтаксического анализатора запроса, сообщающее, что он не может проанализировать запрос с помощью * или ? как первый персонаж.
HTTP Status 400 - org.apache.lucene.queryParser.ParseException: Cannot parse 'id:*': '*' or '?' not allowed as first character in WildcardQuery
type Status report
message org.apache.lucene.queryParser.ParseException: Cannot parse 'id:*': '*' or '?' not allowed as first character in WildcardQuery
description The request sent by the client was syntactically incorrect (org.apache.lucene.queryParser.ParseException: Cannot parse 'id:*': '*' or '?' not allowed as first character in WildcardQuery).
Есть ли какой-нибудь патч, чтобы заставить это работать с just * ? Или это очень дорого сделать такой запрос?
Lucene не позволяет вам запускать WildcardQueries со звездочкой по умолчанию, потому что это невероятно дорогие запросы и будут очень, очень, очень медленными на больших индексах.
Если вы используете Lucene QueryParser, вызовите setAllowLeadingWildcard (true) на нем, чтобы включить его.
Если вы хотите, чтобы все документы имели определенный набор полей, вам гораздо лучше запрашивать или прогуливать индекс программно, чем использовать QueryParser. Вы действительно должны использовать только QueryParser для анализа пользовательского ввода.
id:[a* TO z*] id:[0* TO 9*] etc.
id:[a* TO z*] id:[0* TO 9*] etc.
Я просто сделал это в lukeall на моем индексе, и это сработало, поэтому он должен работать в Solr, который использует стандартный парсер запросов. На самом деле я не использую Solr.
В base Lucene есть прекрасная причина, по которой вы никогда не будете запрашивать каждый документ, потому что для запроса документа вы должны использовать new indexReader("DirectoryName") и применить к нему запрос. Поэтому вы можете полностью пропустить применение запроса к нему и использовать методы indexReader numDocs() для получения подсчета всех документов и document(int n) для извлечения любого из документов.
Если вы просто пытаетесь получить все документы, Solr поддерживает запрос*:*. Это единственный раз, когда я знаю, что Solr позволит вам начать запрос с *. Я уверен, что вы, вероятно, видели этот запрос по умолчанию на странице администратора Solr.
Если вы пытаетесь выполнить более конкретный запрос с * в качестве первого символа, например, скажем id: * 456, то один из лучших способов, которые я видел, - это индексировать это поле дважды. Один раз нормально (имя поля: id), и один раз со всеми перевернутыми символами (имя поля: reverse_id). Тогда вы могли бы по существу сделать запрос id: 456, отправив вместо него запрос reverse_id:654 . Надеюсь, это имеет смысл.
Вы также можете найти список рассылки группы пользователей Solr по адресу http://www.mail-archive.com/solr-user@lucene.apache.org/ где такие вопросы возникают довольно часто.
Следующая проблема Solr-это запрос на возможность настройки синтаксического анализатора запросов по умолчанию lucene. https://issues.apache.org/jira/browse/SOLR-218
В этом выпуске вы можете найти следующее описание как 'patch' Solr. Эта модификация позволит вам начинать запросы с символа *.
Йонас Солк: я в основном обновил только один файл Java: SolrQueryParser.java.
public SolrQueryParser(IndexSchema schema, String defaultField) {
...
setAllowLeadingWildcard(true);
setLowercaseExpandedTerms(true);
...
}
...
public SolrQueryParser(QParser parser, String defaultField, Analyzer analyzer) {
...
setAllowLeadingWildcard(true);
setLowercaseExpandedTerms(true);
...
}
Я не уверен, нужен ли setLowercaseExpandedTerms...
Я предполагаю, что с id:* вы просто пытаетесь сопоставить все документы, верно?
Я никогда раньше не использовал solr, но в моем опыте Lucene, когда мы проглатываем данные, мы добавили скрытое поле в каждый документ, а затем, когда нам нужно вернуть каждую запись, мы ищем строковую константу в этом поле, которая одинакова для каждой записи.
Если вы не можете добавить такое поле в своей ситуации, вы можете использовать RegexQuery с regex, которые будут соответствовать всему, что можно найти в поле id.
Правка: фактически отвечая на вопрос. Я никогда не слышал о патче, чтобы заставить его работать, но я был бы удивлен, если бы он даже мог работать достаточно хорошо. Смотрите этот вопрос по причине, почему неограниченные PrefixQuery могут вызвать проблему.