Acora

Skjermbilde programvare:
Acora
Prog.varedetaljer:
Versjon: 1.8
Last opp dato: 11 May 15
Utvikler: Stefan Behnel
Lisens: Gratis
Popularitet: 10

Rating: 3.0/5 (Total Votes: 1)

Acora er "fgrep 'for Python, en rask multi-søkeord tekst søkemotor.
Basert på et sett av søkeord, genererer det et søk automat (DFA) og kjører den over strengen innspill, enten unicode eller bytes.
Acora er basert på Aho-Corasick algoritme og en NFA-til-DFA Powerset konstruksjon.
Acora kommer med både en ren Python implementering og en rask binær modul skrevet i Cython.
Hvordan bruker jeg den?
Importere pakken:
>>> Fra acora import AcoraBuilder
Samle noen søkeord:
>>> Byggmester = AcoraBuilder ('ab', 'bc', 'de')
>>> Builder.add ('a', 'b')
Generere Acora søkemotor for gjeldende søkeord sett:
>>> Ac = builder.build ()
Søk en streng for alle forekomster:
>>> Ac.findall ('abc')
[('A', 0), ('ab', 0), ('b', 1), ('bc', 1)]
>>> Ac.findall ('Abde')
[('A', 0), ('ab', 0), ('b', 1), ('de', to)]
Iterere over søkeresultatene som de kommer inn:
>>> For kw, pos i ac.finditer ('Abde'):
... Print ("% 2s [% d]"% (kw, pos))
& Nbsp; en [0]
ab [0]
& Nbsp; b [1]
de [2]
vanlige spørsmål og oppskrifter
1. Hvordan kjører jeg en grådig søk for de lengste matchende søkeord?
& Nbsp; >>> byggmester = AcoraBuilder ('a', 'ab', 'abc')
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> for kw, pos i ac.finditer ('abbabc'):
& Nbsp; ... print (kw)
& Nbsp; en
& Nbsp; ab
& Nbsp; en
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> fra itertools importere groupby
& Nbsp; >>> fra operatør import itemgetter
& Nbsp; >>> def longest_match (kamper):
& Nbsp; ... for pos, match_set i groupby (kamper, itemgetter (1)):
& Nbsp; ... utbytte max (match_set)
& Nbsp; >>> for kw, pos i longest_match (ac.finditer ('abbabc')):
& Nbsp; ... print (kw)
& Nbsp; ab
& Nbsp; abc
2. hvordan gjør jeg analysere linje for linje, som fgrep gjør, men med vilkårlige linjeavslutninger?
& Nbsp; >>> def group_by_lines (s, * nøkkelord):
& Nbsp; ... byggmester = AcoraBuilder (' r', ' n', * nøkkelord)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = None
& Nbsp; ...
& Nbsp; ... for kw, pos i ac.finditer (er):
& Nbsp; ... hvis kw i ' r n':
& Nbsp; ... hvis last_ending == ' r' og kw == ' n':
& Nbsp; ... fortsette # kombinert CRLF
& Nbsp; ... utbytte tuppel (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... annet:
& Nbsp; ... last_ending = None
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... utbytte tuppel (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> for kampene i group_by_lines ('a r r nbc r ndede n fakke', * kwds):
& Nbsp; ... Print (kampene)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ('bc',)
& Nbsp; ('de', 'de')
& Nbsp; ()
& Nbsp; ('ab',)

Egenskaper

  • fungerer med Unicode-strenger og byte-strenger
  • om 2-3x så fort som Pythons vanlig uttrykk motor for de fleste innspill
  • finner overlappende kampene, det vil si alle kampene i alle søkeord
  • støtte til små bokstaver søk (~ 10x så fort som 're')
  • frigjør GIL mens du søker
  • ekstra (sakte men kort) ren Python implementering
  • støtte for Python 2.5+ og 3.x
  • støtte for søk i filer
  • givende BSD-lisens

Hva er nytt i denne versjonen:

  • pickle støtte for pre-bygget søkemotorer
  • ytelsesoptimaliseringer i byggmester
  • Unicode parsing er optimalisert for Python 3.3 og senere
  • ikke lenger recompiles kilder når Cython er installert, med mindre --with-cython alternativet er sendt til setup.py (krever Cython 0,20 +)
  • bygge mislyktes med nyere Cython versjoner
  • bygget ved hjelp Cython 0.20.1

Hva er nytt i versjon 1.6:

  • vesentlig raskere automat bygningen
  • ikke lenger omfatter .hg repo i kildedistribusjonen
  • bygget ved hjelp Cython 0,15 (RC0)

Hva er nytt i versjon 1.5:

  • Cython utarbeidet NFS-to-DFA byggingen går vesentlig raskere
  • alltid bygge tilleggsmoduler selv om Cython ikke er installert
  • - ingen kompilere bryteren i setup.py å hindre utvidelse modul bygningen
  • bygget ved hjelp Cython 0.14.1 (RC2)

Hva er nytt i versjon 1.4:

  • minor speed-up i indre søkemotor sløyfe
  • noen kode opprydding
  • bygget ved hjelp Cython 0.12.1 (endelig)

Krav

  • Python

Kommentarer til Acora

Kommentarer ikke funnet
Legg til kommentar
Slå på bilder!