7
votes

Quelle est la meilleure bibliothèque d'indexation de texte Java pour Google App Moteur?

Au moment où je sais que la boussole peut gérer ce travail. Mais l'indexation avec Compass semble assez chère. Y a-t-il des alternatives plus légères?


0 commentaires

5 Réponses :


4
votes

Apache Lucene est le choix de facto pour l'indexation complète du texte en Java. Ressemble à Compass Core contient "une implémentation du répertoire Lucene pour stocker l'index dans une base de données (utilisant JDBC). Il est séparé de la base de code Compass et peut être utilisé avec des applications pure Lucene. " plus des tonnes d'autres choses. Vous pouvez essayer de séparer simplement la composante Lucence, enlevant ainsi plusieurs libs et la rendant plus légère. Soit cela ou fossé compas tout à fait et utilisez de la Lucene pur pur.


1 commentaires

Oui, je vais probablement aller de cette façon. Mon inquiétude à propos de l'utilisation de Lucene est que l'IO est très coûteux sur le moteur de l'App et j'espère que certains organes ont déjà produit une version optimisée de Lucene ou de la bibliothèque de culture à domicile qui prend extrêmement élevé IO Coûts.



1
votes

Pour Google App Engine, la seule bibliothèque d'indexation que j'ai vue est Appengine-Search , avec une description de la façon de l'utiliser sur Cette page . Je n'ai pas essayé cependant.

J'ai utilisé Lucene (quelle boussole est basée sur) et l'a trouvé à Travailler très bien avec des dépenses relativement faibles. L'indexation est une tâche que vous pouvez planifier à des moments qui fonctionnent pour votre application.

Certaines alternatives Les projets d'indexation sont mentionnés dans Ce thread , y compris xapian et MINION . Je n'ai pas vérifié l'une de ces personnes, car Lucene a fait tout ce que j'avais besoin de cela très bien.


0 commentaires

6
votes

Pour être honnête, je ne sais pas si Lucene sera plus léger que la boussole en termes d'indexation (pourquoi serait-il, ne doit-il pas utiliser Lucene pour cela?).

Quoi qu'il en soit, parce que vous avez demandé des alternatives, il y a Gaelucene . Je cite Son annonce ci-dessous : P>

éclairé par la discussion " Est-ce-que je peux Exécutez Lucene dans Google App Moteur? ", J'ai mis en place un google datastore basé Composant de Lucene, gaelucène, qui peut vous aider à exécuter des applications de recherche sur Google App Moteur. P>

Le principal clazz de gaelucène comprend: p>

  • gaeDirectory - un répertoire en lecture seule basé sur Google DataStore. LI>
  • gaefile - représente un fichier d'index, le contenu d'octet du fichier sera divisé dans Multi Gaefilecontent. Li>
  • Gaefilecontent - représente un segment de fichier d'index. Li>
  • gaecategory - l'identifiant de différents indices. Li>
  • GaeindexInput - une index de mémoire-résident? la mise en œuvre comme la Raminputtream. Li>
  • GaeindexReader - Wrapper pour IndexReader? qui mis en cache dans GaeindexReaderPool Li>
  • GaeindexReaderPool - Piscine pour GaeindexReader Li> ul>

    L'extrait de code suivant démontre l'utilisation de gaelucène do Recherche: p>

    Query queryObject = parserQuery(request);
    GAEIndexReaderPool readerPool = GAEIndexReaderPool.getInstance();
    GAEIndexReader indexReader = readerPool.borrowReader(INDEX_CATEGORY_DEMO);
    IndexSearcher searcher = newIndexSearcher(indexReader);
    Hits hits = searcher.search(queryObject);
    readerPool.returnReader(indexReader);
    


2 commentaires

Gardez à l'esprit que Gaelucene ne vous permet pas de construire index dans GAE. Vous devez préparer des fichiers indiciels quelque part et les télécharger sur GAE.


Il y a aussi une note dans Google Code dit "Gaelucene n'est pas apte à courir avec d'énormes indices, il fait mieux pour les petits indices, environ 100 Mo. Pour les grands indices changeants, vous devez trouver d'autres solutions".



0
votes

La recherche interne de Google App Moteur semble mieux et même Havsupport Synonymes:

https://developers.google.com/appengine/docs/java/search /


0 commentaires

0
votes

Si vous voulez diriger Lucene sur GAE, vous pourriez également consulter Lugaene . C'est une implémentation de Lucene's Directory pour Gae.

L'utilisation est en fait assez simple, il suffit de remplacer l'un des répertoires standard de Lucene avec gaeDirectory xxx

gaelucène semble être en" mode de maintenance "(aucun commit depuis sept. 2009) et Lucene-appengine ne fonctionne pas (encore) lorsque vous utilisez objectivez version 4 dans votre application.

Disclaimer: Je suis l'auteur de Lugaene.


0 commentaires