У меня проблема с установкой правильного пути для моего файла index. Было бы здорово, если бы это было внутри моего весеннего приложения, так как, я думаю, оно будет работать даже после того, как я разверну свое приложение в Cloudbees.
Это мой объект, который я пытаюсь проиндексировать:
@Entity
@Table(name="educations")
@Indexed(index="educations")
public class Education {
У меня есть следующее в servlet-context.xml:
<resources mapping="/resources/**" location="/resources/"/>
Я указываю путь к индексу Lucene следующим образом:
Properties props = new Properties();
props.put("hibernate.search.default.indexBase", "resources/lucene/indexes");
entityManagerFactory.setJpaProperties(props);
Что не дает мне никакой ошибки, но я также не могу найти папку, которую я не понимаю. Я попытался найти его.
Я также пробовал:
props.put("hibernate.search.default.indexBase", "classpath:/lucene/indexes");
и
props.put("hibernate.search.default.indexBase", "/resources/lucene/indexes");
Но до сих пор не могу найти папку. Однако через некоторое время борьбы с этим я пытаюсь поместить его в свой домашний каталог. (что может вызвать у меня проблемы позже при развертывании в облаке):
props.put("hibernate.search.default.indexBase", "/lucene/indexes");
я получаю следующее
Cannot write into index directory: /lucene/indexes for index educations
Поэтому я предполагаю, что это ошибка разрешения. Я пробую следующее в терминале (OSX):
sudo chmod -R u+rwX /lucene/indexes/
и
sudo chmod -R 755 /lucene/indexes/
Но все та же ошибка. Может ли кто-нибудь пролить свет на это?
Благодарю вас!
Редактировать: После еще одного расследования я уверен, что это проблема разрешений. Если я укажу полный путь к моему корню приложения Spring, это сработает. Я до сих пор не знаю, как указать это, не указывая полный путь.