Ошибка WildcardQuery в Solr

Выбранный ответ датируется некоторое время назад. Нецелесообразно объявлять каждую привязку в обычном связующем HK2. Я использую Tomcat, и мне просто нужно добавить одну зависимость. Несмотря на то, что он был разработан для Glassfish, он идеально вписывается в другие контейнеры.

   
        org.glassfish.jersey.containers.glassfish
        jersey-gf-cdi
        ${jersey.version}
    

Убедитесь, что ваш контейнер правильно настроен ( см. документацию ).

10
задан cnu 19 August 2008 в 10:59
поделиться

6 ответов

Если Вы хотите все документы, сделайте запрос на *:*

Если Вы хотите все документы с определенным полем (например, идентификатор) пробуют идентификатор: [* К *]

14
ответ дан 3 December 2019 в 14:35
поделиться

Lucene не позволяет Вам запускать WildcardQueries со звездочки по умолчанию, потому что это - невероятно дорогие запросы и будет очень, очень, очень медленно на больших индексах.

При использовании Lucene QueryParser назовите setAllowLeadingWildcard (верным) на нем для включения его.

Если Вы хотите все документы с определенным полевым набором, Вы - очень более обеспеченные запросы или обход индекса программно, чем использование QueryParser. Необходимо действительно только использовать QueryParser для парсинга ввода данных пользователем.

6
ответ дан 3 December 2019 в 14:35
поделиться
id:[a* TO z*] id:[0* TO 9*] etc.

Я просто сделал это в lukeall на моем индексе, и он работал, поэтому он должен работать в Solr, который использует стандартный анализатор запроса. Я на самом деле не использую Solr.

В основном Lucene существует прекрасная причина того, почему Вы никогда не запрашивали бы для каждого документа, это - потому что для запросов для документа необходимо использовать a new indexReader("DirectoryName") и примените запрос к нему. Поэтому Вы могли полностью пропустить применение запроса к нему и использовать indexReader методы numDocs() получить количество всех документов, и document(int n) получать любой из документов.

5
ответ дан 3 December 2019 в 14:35
поделиться

На самом деле я использовал обходное решение для этого. Я добавляю символ к идентификатору, например: A1, A2, и т.д.

С такими значениями в поле возможно искать использование запроса id:A*

Но хотел бы найти, существует ли истинное решение.

1
ответ дан 3 December 2019 в 14:35
поделиться

Я принимаю с идентификатором:* Вы просто пытаетесь соответствовать всем документам, правильно?

Я никогда не использовал solr прежде, но в моем опыте Lucene, при поглощении данных, мы добавили скрытое поле к каждому документу, затем когда мы должны возвратить каждую запись, мы делаем поиск строковой константы в том поле, это - то же для каждой записи.

Если Вы не можете добавить поле как этот в Вашей ситуации, Вы могли бы использовать RegexQuery с regex, который будет соответствовать чему-либо, что могло быть найдено в идентификационном поле.

Править: на самом деле ответ на вопрос. Я никогда не слышал о патче, чтобы заставить это работать, но я был бы удивлен, могло ли это даже быть сделано работать обоснованно хорошо. Посмотрите этот вопрос по причине, почему неограниченный PrefixQuery может вызвать проблему.

1
ответ дан 3 December 2019 в 14:35
поделиться

Если Вы просто пытаетесь получить все документы, Solr действительно поддерживает запрос *:*. Это - единственное время, которое я знаю того, что Solr позволит Вам начать запрос с *. Я уверен, что Вы, вероятно, рассматривали это как запрос по умолчанию на администраторской странице Solr.

При попытке сделать более определенный запрос с *, поскольку первый символ, как говорят идентификатор: *456 затем один из лучших способов, которыми я видел, состоит в том, чтобы индексировать то поле дважды. Однажды обычно (имя поля: идентификатор), и однажды со всеми инвертированными символами (имя поля: reverse_id). Затем Вы могли по существу сделать запрос id:456 путем отправки запроса reverse_id:654 вместо этого. Надежда, которая имеет смысл.

Можно также искать список рассылки группы пользователей Solr в http://www.mail-archive.com/solr-user@lucene.apache.org/, где вопросы как это подходят довольно часто.

4
ответ дан 3 December 2019 в 14:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: