Используя CLucene против Java Lucene
В настоящее время я использую Java Lucene для одного проекта и добиваюсь хорошей производительности. Я ищу вариант C/C++ для lucene и наткнулся на CLucene на sourceforge.
Но я хотел проверить, является ли CLucene столь же стабильным и надежным, как Java Lucene, и имеет ли все функции, поддерживаемые Java Lucene, также лицензируется ли Apache и активно ли он поддерживается? Если ДА, почему у меня нет возможности загрузить CLucene на сайте Apache Lucene (хотя на сайте Apache Lucene у меня есть опция lucene.net).
Хотелось бы больше узнать об использовании CLucene для корпоративного программного обеспечения.
3 ответа
CLucene доступен под лицензией Apache v2.0 и размещен на sourceforge. Его нельзя загрузить с веб-сайта Lucene, поскольку CLucene является независимым проектом. Однако Lucy, который является портом C Lucene (для динамических языков), доступен на веб-сайте Lucene, потому что это подпроект Lucene. То же самое относится и к Lucene.NET.
Если вы не обязаны использовать язык JVM, я бы порекомендовал вам использовать версию Java.
Все разработки выполняются для версии Java, а затем иногда переносятся в другие порты, такие как CLucene. Как следствие, множество полезных функций все еще доступны только в версии Java (например, запросы функций недоступны в CLucene).
Что касается производительности, C/C++ иногда может быть быстрее, чем Java, но в версии Java есть много фрагментов кода, которые используют очень аккуратные алгоритмы для повышения производительности, такие как:
- автоматы Левенштейна для нечетких запросов,
- неблокирующий механизм очистки для повышения пропускной способности индексации.
И последнее, но не менее важное, версия Java является наиболее проверенной и используется на многих сайтах с очень высоким трафиком, таких как LinkedIn или Twitter.
CLucene является стабильным и надежным и имеет ту же лицензию, что и версия Java (ASL). Он не связан с веб-сайтами Apache, так как этот проект не находится под эгидой ASF.
CLucene является построчным портом Java Lucene, и, будучи нативным кодом (не работающим на виртуальной машине и не занимающимся собственной памятью, выделяет / освобождает память среди прочего), он обычно быстрее, чем Java Lucene. Некоторые тесты (немного устаревшие сейчас) показывают это. Будучи точным портом, он на 100% совместим с индексами Java Lucene и наоборот.
Единственным недостатком использования CLucene является то, что он не полностью соответствует текущей версии Lucene.
Последняя версия для Lucene - 5.2, и с 2.3.2 были внесены значительные изменения в формат файла индекса, указанный на https://lucene.apache.org/core/5_2_1/core/org/apache/lucene/codecs/lucene50/package-summary.html. Я не верю, что есть что-то еще более обновленное, чем CLucene. Что касается Люси, веб-сайт заявляет, что: две библиотеки не совместимы ни с точки зрения ни формата файла, ни API, и не планируется устанавливать такую совместимость.