Acora

Software kuvakaappaus:
Acora
Ohjelmiston tiedot:
Versio: 1.8
Lähetyksen päivämäärä: 11 May 15
Kehittäjä: Stefan Behnel
Lupa: Vapaa
Suosio: 8

Rating: 3.0/5 (Total Votes: 1)

Acora on "fgrep" Python, nopea usean avainsanateksti hakukone.
Perustuen avainsanoja, se tuottaa haku automaatti (DFA) ja kulkee sen yli string input, joko Unicode tai tavua.
Acora perustuu Aho-Corasick algoritmi ja NFA-to-DFA Powerset rakentamiseen.
Acora on sekä puhdas Python täytäntöönpano ja nopea binary moduuli kirjoitettu Cython.
Miten käytän sitä?
Tuo paketti:
>>> Alkaen acora tuonti AcoraBuilder
Kerää joitakin avainsanoja:
>>> Rakennusmestari = AcoraBuilder (ab ',' bc ',' de ')
>>> Builder.add ('', 'b')
Luo Acora hakukone nykyisen avainsanajoukon:
>>> Ac = builder.build ()
Etsi merkkijono kaikissa tapauksissa:
>>> Ac.findall ("abc")
[('', 0), ("ab", 0), ('b', 1), ('bc', 1)]
>>> Ac.findall ('ABDE')
[('', 0), ("ab", 0), ('b', 1), ('de', 2)]
Kerrata yli hakutulokset kuin ne tulevat:
>>> For kw, pos in ac.finditer ('ABDE'):
... Print ("% 2s [% d]"% (kw, pos))
& Nbsp; [0]
ab [0]
& Nbsp; b [1]
de [2]
UKK ja reseptit
1. Miten luon ahne etsiä pisimpään matching avainsanat?
& Nbsp; >>> rakennusmestari = AcoraBuilder ('', 'ab', 'abc')
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> varten kw, pos in ac.finditer ('abbabc'):
& Nbsp; ... print (kw)
& Nbsp;
& Nbsp; ab
& Nbsp;
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> alkaen itertools tuoda groupby
& Nbsp; >>> operaattorilta tuonti itemgetter
& Nbsp; >>> def longest_match (ottelut):
& Nbsp; ... ja pos, match_set vuonna groupby (ottelut, itemgetter (1)):
& Nbsp; ... tuotto max (match_set)
& Nbsp; >>> varten kw, pos vuonna longest_match (ac.finditer ('abbabc')):
& Nbsp; ... print (kw)
& Nbsp; ab
& Nbsp; abc
2. Miten voin jäsentää linja-by-line, kuten fgrep tekee, mutta mielivaltainen linja päätteitä?
& Nbsp; >>> def group_by_lines (s, * avainsanat):
& Nbsp; ... rakennusmestari = AcoraBuilder (' r', ' n', * avainsanat)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = None
& Nbsp; ...
& Nbsp; ... for kw, pos vuonna ac.finditer (t):
& Nbsp; ... jos kw in ' r n ":
& Nbsp; ... jos last_ending == ' r' ja kw == ' n':
& Nbsp; ... jatka # yhdistetty CRLF
& Nbsp; ... tuotto monikko (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... muuten:
& Nbsp; ... last_ending = None
& Nbsp; ... current_line_matches.append (kw)
& Nbsp; ... tuotto monikko (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> otteluiden group_by_lines (' r r nbc r ndede n napata ", * kwds):
& Nbsp; ... print (ottelut)
& Nbsp; ()
& Nbsp; ()
& Nbsp; ("bc",)
& Nbsp; ("de", "de ')
& Nbsp; ()
& Nbsp; ("ab",)

Ominaisuudet

  • toimii unicode jouset ja tavu jouset
  • noin 2-3x niin nopeasti kuin Pythonin säännöllinen lauseke moottorin suurimman input
  • löytää päällekkäisiä ottelut, eli kaikki ottelut kaikkien avainsanojen
  • tuen kirjainkoko hakuun (~ 10x niin nopeasti kuin "uudelleen")
  • vapauttaa GIL etsiessään
  • lisää (hidas mutta lyhyt) puhdasta Python täytäntöönpano
  • Python 2.5+ ja 3.x
  • tukeminen hakuja tiedostoja
  • sallivan BSD-lisenssi

Mikä on uusi tässä julkaisussa:

  • suolakurkku tukea valmiiksi rakennettu hakukoneita
  • suorituskyvyn optimointeja rakennusmestari
  • Unicode jäsennys on optimoitu Python 3.3 ja myöhemmin
  • ei enää recompiles lähteitä kun Cython on asennettu, ellei --with-cython vaihtoehto johdetaan setup.py (vaatii Cython 0,20 +)
  • rakentaa epäonnistui viime Cython versioiden
  • rakennettu Cython 0.20.1

Mikä on uusi versiossa 1.6:

  • huomattavasti nopeammin automaatin rakennus
  • ei enää sisällä .hg repo vuonna lähde jakeluverkon
  • rakennettu Cython 0.15 (RC0)

Mikä on uusi versiossa 1.5:

  • Cython koottu NFS-2-DFA rakentamisen toimii huomattavasti nopeammin
  • aina rakentaa laajennusmoduulit vaikka Cython ei ole asennettu
  • - no-koota kytkin setup.py estää laajennusmoduulissa rakennus
  • rakennettu Cython 0.14.1 (RC2)

Mikä on uusi versiossa 1.4:

  • pienet nopeus-up in sisempi hakukoneen loop
  • koodia uudelleenjärjestäminen
  • rakennettu Cython 0.12.1 (lopullinen)

vaatimukset

  • Python

Kommentit Acora

Kommentteja ei löytynyt
Lisää kommentti
Ota kuvia!