Я реализовал пользовательский org.apache.solr.handler.RequestHandlerBase
и пользовательский org.apache.solr.request.QueryResponseWriter
в Scala 2.8 с Java 1.6.0 и Solr 1.4.0. Я не уверен, что версия Lucene, которую использует Solr 1.4.0, но я предположил бы, что она довольно недавняя. Как бы то ни было, я упаковал файлы классов, сгенерированные Scala, в банку, и Solr смог загрузить его очень хорошо. Так что то, что вы пытаетесь сделать, возможно.
Я бы сказал, что главное, что нужно преодолеть, - это преобразовать объекты коллекции Java, такие как List
и Vector
, в объекты коллекции Scala и наоборот. scala.collection.JavaConversions
в Scala 2.8.0, вероятно, будет вашим другом.
Еще одна вещь, если вам нужно переопределить метод, такой как getBooleanQuery , вам может понадобиться добавить [_]
, чтобы компилировать Scala (код не тестировался - но, поскольку мне потребовалось некоторое время, чтобы понять, что когда я запустил Scala, я решил поделиться этим):
override def getBooleanQuery(clauses: java.util.List[_]): Query = { ... }
Редактировать: : Еще одна вещь о совместной компиляции. Информация Даниила о том, как объединить компиляцию, полезна. Он может вам и не понадобиться, хотя, скорее всего, вам просто нужно scalac
знать путь к jar-файлам Lucene, затем упаковать свой класс в новый jar и использовать ваш jar-файл во время выполнения в развернутой среде ,