2012-02-17 15 views
7

Attualmente sto utilizzando Java lucene per uno dei progetti e ottenendo un tipo di prestazioni OK. Sto cercando l'opzione C/C++ per lucene e ho trovato CLucene su sourceforge.Utilizzo di CLucene vs java lucene

Ma volevo controllare se CLucene è stabile e affidabile come Java lucene e con tutte le funzionalità supportate da Java Lucene, è anche autorizzato da Apache e supportato attivamente? se SÌ perché non ho la possibilità di scaricare CLucene sul sito apache Lucene (sul sito apache lucene ho l'opzione lucene.net però).

Vorrebbe capire di più sull'utilizzo di CLucene per il software aziendale.

risposta

14

CLucene è disponibile con licenza Apache v2.0 ed è ospitato su sourceforce. Non è scaricabile dal sito web di Lucene perché CLucene è un progetto indipendente. Tuttavia, Lucy, che è una porta C di Lucene (destinata ai linguaggi dinamici), è disponibile sul sito Web di Lucene perché è un sottoprogetto di Lucene. Lo stesso vale per Lucene.NET.

A meno che non si sia costretti a non utilizzare un linguaggio JVM, si consiglia di utilizzare la versione Java.

Tutti gli sviluppi vengono eseguiti per la versione Java e talvolta a ritroso su altre porte come CLucene. Di conseguenza, molte funzionalità utili sono ancora disponibili solo nella versione Java (ad esempio, le richieste di funzione non sono disponibili in CLucene).

quanto riguarda le prestazioni, C/C++ potrebbe essere a volte più veloce di Java, ma ci sono un sacco di pezzi di codice nella versione Java che utilizzano algoritmi molto accurati per migliorare le prestazioni, come ad esempio:

Ultimo ma non meno importante, la versione Java è la più testata e utilizzata in molti siti Web con traffico molto elevato come LinkedIn o Twitter.

+2

Lucene.Net e Lucy sono progetti autonomi ora. Lucy non è più veloce di Java Lucene in molti casi e non è progettato per essere compatibile con indici (ovvero un indice creato con java lucene non verrà eseguito con Lucy), direttamente dal sito Web di Lucy http://incubator.apache.org/ lucy/ – Prescott

+0

Purtroppo lucene non è incorporabile in un altro programma.Un indice di testo completo è molto utile in molti programmi. – Lothar

9

CLucene è stabile e affidabile e con la stessa licenza della versione Java (ASL). Non è collegato dai siti web di Apache in quanto questo progetto non è sotto l'ombrello dell'ASF.

CLucene è la porta line-by-line di Java Lucene e, essendo codice nativo (non in esecuzione su una VM e che esegue allocazioni/dealloc di memoria personali tra le altre cose), è solitamente più veloce di Java Lucene. Alcuni parametri (un po 'vecchi ora) lo dimostrano. Essendo una porta esatta, è compatibile al 100% con gli indici Java Lucene e viceversa.

L'unico inconveniente dell'utilizzo di CLucene è che non è completamente aggiornato con la versione attuale di Lucene.

+0

La pagina cLucene dice che usa una versione più stabile con una precedente (1.9.1) api o una più nuova ma potenzialmente meno affidabile dalla testa. Sapresti quanto è instabile la testa? Inoltre, non ho visto alcuna pagina su chi sta usando cLucene. Sapresti? –

+0

La versione 2.3.2 è stabile, è durata almeno 1-2 anni da quando sono stato coinvolto attivamente nello sviluppo di questo progetto – synhershko

+0

"Non completamente aggiornato" in un understatement; l'attuale versione di Java Lucene è 6.2.1, mentre l'ultima versione di CLucene è basata su Java Lucene 2.3.2. Inoltre, l'ultima versione di CLucene è stata più di 3 anni fa. Senza una seria sponsorizzazione, così com'è ora, sembra che non ci sia modo di recuperare la versione di Java. – rustyx

2

L'ultima versione di Lucene è 5.2 e sono state apportate modifiche significative al formato di file indice dal 2.3.2, elencato allo https://lucene.apache.org/core/5_2_1/core/org/apache/lucene/codecs/lucene50/package-summary.html#package_description. Non credo che ci sia qualcos'altro disponibile che sia più aggiornato di CLucene. Per quanto riguarda Lucy, il sito Web afferma che: le due librerie non sono compatibili in termini di formato di file o API e non ci sono piani per stabilire tale compatibilità.