Как использовать метод версии ‘valueOf(строка)’

#java #search #lucene

#java #Поиск #lucene

Вопрос:

Интересно, может ли кто-нибудь сказать мне, как использовать метод Apache Lucene ‘valueOf(String)’ для версии? Используется ли это для возврата текущей версии, которая должна использоваться из перечисления?

http://lucene.apache.org/java/3_1_0/api/core/org/apache/lucene/util/Version.html#valueOf (java.lang.Строка)

Например, выполняет ли:

 Version.valueOf("StandardAnalyzer");
  

возвращает версию emum, которая должна использоваться со StandardAnalyzer?

Спасибо!

Ответ №1:

я думаю, что таким образом вам нужно: проверить это

 for(Version v : Version.valueOf("StandardAnalyzer")) System.out.println(v);
  

Ответ №2:

Этот valueOf метод определен для каждого метода и просто преобразует строку типа "LUCENE_24" в соответствующую константу enum LUCENE_24 .

Ответ №3:

Я думаю, что перечисление предназначено для того, чтобы вы могли безопасно выбирать версию, которую хотите использовать. Я предполагаю, что вы должны использовать последнюю версию, если начинаете с нуля, но в противном случае вы должны добровольно перейти с одной версии на другую. Они устарели от константы LUCENE_CURRENT, чтобы вы не «обновлялись» автоматически при выборе новой версии библиотеки.

Итак, в принципе, я бы передал Version.LUCENE_31 в качестве конфигурации для нового проекта. Перечисление также можно использовать для сравнения двух версий с помощью метода onOrAfter.

Тем не менее, чтобы ответить на ваш вопрос, я думаю (но не могу проверить прямо сейчас), что если по какой-то причине вы хотите использовать метод valueOf, вам придется передать строку с именем версии. Например, Version.valueOf(«LUCENE_23»). Конечно, это было бы полезно, если имя вашей версии взято из файла конфигурации.

Надеюсь, это поможет

Комментарии:

1. Спасибо за ваш ответ. Я использую версию 3.1.0 Lucene, и причина, по которой я опубликовал, заключается в том, что всякий раз, когда я использовал версию. LUCENE_31 для StandardAnalyzer я получаю исключение: исключение org.springframework.web.util.NestedServletException: ошибка обработки обработчика; вложенным исключением является java.lang. Ошибка NoClassDefFoundError: org/apache/lucene/util/Version

2. Ох. Это еще одна проблема. Это единственный класс lucene, выдающий вам эту ошибку?