Acora

Logiciel capture d'écran:
Acora
Détails logiciels:
Version: 1.8
Date de transfert: 11 May 15
Développeur: Stefan Behnel
Licence: Gratuit
Popularité: 8

Rating: 3.0/5 (Total Votes: 1)

Acora est «fgrep» pour Python, un moteur de recherche de texte multi-mot rapide.
Basé sur un ensemble de mots-clés, il génère un automate de recherche (DFAE) et l'exécute sur l'entrée de chaîne, soit unicode ou octets.
Acora est basé sur l'algorithme Aho-Corasick et une construction NFA-à-DFA powerset.
Acora est fourni avec un implémentation de Python pur et un module binaire rapide écrit en Cython.
Comment puis-je utiliser?
Importer le paquet:
>>> From acora importation AcoraBuilder
Recueillir quelques mots-clés:
>>> Constructeur = AcoraBuilder ('ab', 'bc', 'de')
>>> Builder.add ('a', 'b')
Générer le moteur de recherche Acora pour le jeu de mot-clé actuelle:
>>> Ac = builder.build ()
Rechercher une chaîne pour toutes les occurrences:
>>> Ac.findall ('abc')
[('A', 0), ('ab', 0), ('b', 1), ('BC', 1)]
>>> Ac.findall ('abde')
[('A', 0), ("ab", 0), ('b', 1), («de», 2)]
Itérer sur les résultats de la recherche comme ils viennent dans:
>>> Pour kw, pos dans ac.finditer ('abde'):
... Print ("% 2s [% d]"% (kw, pos))
& Nbsp; a [0]
ab [0]
& Nbsp; b [1]
de [2]
FAQ et recettes
1. Comment puis-je lancer une recherche avide de mots-clés les plus longues correspondant?
& Nbsp; >>> constructeur = AcoraBuilder ('a', 'ab', 'abc')
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> pour kw, pos dans ac.finditer ('abbabc'):
& Nbsp; ... impression (kw)
& Nbsp; une
& Nbsp; ab
& Nbsp; une
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> from itertools importer groupby
& Nbsp; de l'opérateur >>> import itemgetter
& Nbsp; >>> longest_match def (matches):
& Nbsp; ... pour pos, match_set dans groupby (matchs, itemgetter (1)):
& Nbsp; ... le rendement max (match_set)
& Nbsp; >>> pour kw, pos dans longest_match (ac.finditer ('abbabc')):
& Nbsp; ... impression (kw)
& Nbsp; ab
& Nbsp; abc
2. Comment puis-je analyser la ligne-par-ligne, comme fgrep fait, mais avec des fins de ligne arbitraires?
& Nbsp; >>> def group_by_lines (s *, mots-clés):
& Nbsp; ... constructeur = AcoraBuilder (' r', ' n', * mots-clés)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = Aucun
& Nbsp; ...
& Nbsp; ... pour kw, pos dans ac.finditer (s):
& Nbsp; ... si kw dans ' r n':
& Nbsp; ... si last_ending == ' r' et kw == ' n':
& Nbsp; ... continuer # combiné CRLF
& Nbsp; ... rendement tuple (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... else:
& Nbsp; ... last_ending = Aucun
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... rendement tuple (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> pour les matches de group_by_lines ('un r r nbc r Ndede n ' nab, kwds *):
& Nbsp; ... impression (matchs)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ('BC',)
& Nbsp; ('de', 'de')
& Nbsp; ()
& Nbsp; ('ab',)

Caractéristiques :

  • travaille avec des chaînes Unicode et chaînes d'octets
  • à propos de 2-3x aussi vite que moteur d'expressions régulières de Python pour la plupart entrée
  • trouve des correspondances qui se chevauchent, à savoir tous les matches de tous les mots clés
  • soutien à la recherche insensible cas (~ 10x plus rapide que 're')
  • libère le GIL tout en recherchant
  • supplémentaire mise en œuvre de pur Python (lent mais courte)
  • support pour Python 2.5+ et 3.x
  • soutien à la recherche dans les fichiers
  • licence BSD permissive

Quoi de neuf dans cette version:

  • le soutien de cornichon pour les moteurs de recherche pré-construits
  • optimisations de performance dans le constructeur
  • Unicode analyse est optimisé pour Python 3.3 et plus tard
  • ne recompile sources quand Cython est installé, à moins que l'option --with-cython est passé à setup.py (nécessite Cython 0.20 +)
  • build a échoué avec les versions récentes Cython
  • construit en utilisant Cython 0.20.1

Ce qui est nouveau dans la version 1.6:

  • bâtiment sensiblement plus rapide automate
  • ne comprend plus repo .hg dans la distribution de la source
  • construit en utilisant Cython 0,15 (RC0)

Quoi de neuf dans la version 1.5:

  • Cython compilé construction NFS-2-DFA étend sensiblement plus rapide
  • toujours construire des modules d'extension, même si Cython est pas installé
  • - sans compiler commutateur dans setup.py pour empêcher la construction du module d'extension
  • construit en utilisant Cython 0.14.1 (RC2)

Quoi de neuf dans la version 1.4:

  • accélérer mineure en interne boucle de moteur de recherche
  • un certain nettoyage de code
  • construit en utilisant Cython 0.12.1 (final)

Exigences :

  • Python

Commentaires à Acora

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!