Acora

Software skärmdump:
Acora
Mjukvaruinformation:
Version: 1.8
Ladda upp dagen: 11 May 15
Utvecklare: Stefan Behnel
Licens: Gratis
Popularitet: 8

Rating: 3.0/5 (Total Votes: 1)

Acora är "fgrep" för Python, en snabb flersökordstext sökmotor.
Baserat på en uppsättning sökord, genererar det en sökning automat (DFA) och kör den över sträng ingång, antingen Unicode eller byte.
Acora bygger på Aho-Corasick algoritm och en NFA-till-DFA PowerSet konstruktion.
Acora levereras med både en ren genomförande Python och en snabb binär modul skriven i Cython.
Hur använder jag det?
Importera paket:
>>> Från acora import AcoraBuilder
Samla några sökord:
>>> Byggmästare = AcoraBuilder (ab ',' bc ',' de ')
>>> Builder.add ("a", "b")
Generera Acora sökmotor för den aktuella nyckelordsuppsättningen:
>>> Ac = builder.build ()
Sök en sträng för alla förekomster:
>>> Ac.findall ("abc")
[('A', 0), ("ab", 0), ('b', 1), ("bc", 1)]
>>> Ac.findall ('Abde')
[('A', 0), ("ab", 0), ('b', 1), ("de", 2)]
Iterera över sökresultaten när de kommer in:
>>> För kw, pos i ac.finditer (Abde "):
... Print ("% 2s [% d]"% (kw, pos))
& Nbsp; en [0]
ab [0]
& Nbsp; b [1]
de [2]
Vanliga frågor och recept
1. Hur kör jag en girig sökning efter det längsta matchande sökord?
& Nbsp; >>> byggare = AcoraBuilder ("a", "ab", "ABC")
& Nbsp; >>> ac = builder.build ()
& Nbsp; >>> för kw, pos i ac.finditer (abbabc "):
& Nbsp; ... print (kW)
& Nbsp; en
& Nbsp; ab
& Nbsp; en
& Nbsp; ab
& Nbsp; abc
& Nbsp; >>> från itertools importera groupby
& Nbsp; >>> från operatör import itemgetter
& Nbsp; >>> def longest_match (matcher):
& Nbsp; ... för pos, match_set i groupby (matcher, itemgetter (1)):
& Nbsp; ... utbyte max (match_set)
& Nbsp; >>> för kw, pos i longest_match (ac.finditer (abbabc ')):
& Nbsp; ... print (kW)
& Nbsp; ab
& Nbsp; abc
2. Hur gör jag tolka line-by-line, som fgrep gör, men med godtyckliga radslut?
& Nbsp; >>> def group_by_lines (s, * nyckelord):
& Nbsp; ... byggmästare = AcoraBuilder (' r', ' n', * nyckelord)
& Nbsp; ... ac = builder.build ()
& Nbsp; ...
& Nbsp; ... current_line_matches = []
& Nbsp; ... last_ending = Ingen
& Nbsp; ...
& Nbsp; ... för kw, pos i ac.finditer (s):
& Nbsp; ... om kw i " r n ':
& Nbsp; ... om last_ending == ' r' och kw == ' n':
& Nbsp; ... fortsätta # kombinerade CRLF
& Nbsp; ... utbyte tuple (current_line_matches)
& Nbsp; ... del current_line_matches [:]
& Nbsp; ... last_ending = kw
& Nbsp; ... annars:
& Nbsp; ... last_ending = Ingen
& Nbsp; ... current_line_matches.append (kW)
& Nbsp; ... utbyte tuple (current_line_matches)
& Nbsp; >>> kwds = ['ab', 'bc', 'de']
& Nbsp; >>> för matcher i group_by_lines ("en r r NBC r ndede n NAB", * kwds):
& Nbsp; ... print (matcher)
& Nbsp; ()
& Nbsp; ()
& Nbsp; (bc ")
& Nbsp; ('de', 'de')
& Nbsp; ()
& Nbsp; (ab ',)

Egenskaper :

  • arbetar med unicode strängar och byte strängar
  • Om 2-3x så fort som Pythons reguljära uttryck motor för de flesta ingång
  • finner överlappande matcher, det vill säga alla matcher alla sökord
  • stöd för skiftlägesokänsligt sökning (~ 10x så fort som "re")
  • frigör GIL samtidigt söka
  • ytterligare (långsam men kort) ren genomförande Python
  • stöd för Python 2.5+ och 3.x
  • stöd för att söka i filer
  • tillåtande BSD-licensen

Vad är nytt i den här versionen:

  • knipa stöd för de färdiga sökmotorer
  • prestandaoptimeringar i builder
  • Unicode pars är optimerad för Python 3.3 och senare
  • inte längre omkompileringar källor när Cython installeras, såvida --with-Cython alternativet skickas till setup.py (kräver Cython 0,20 +)
  • bygga misslyckats med de senaste Cython versioner
  • byggd med Cython 0.20.1

Vad är nytt i version 1.6:

  • betydligt snabbare automat byggnad
  • inte längre ingår .hg reporäntan i källfördelning
  • byggd med Cython 0,15 (RC0)

Vad är nytt i version 1.5:

  • Cython samman NFS-2-DFA konstruktion går betydligt snabbare
  • alltid bygga utbyggnadsmoduler även om Cython inte är installerad
  • - ingen sammanställa omkopplare i setup.py att förhindra utbyggnadsmodul byggnad
  • byggd med Cython 0.14.1 (rc2)

Vad är nytt i version 1.4:

  • mindre hastighets i inner sökmotor slinga
  • lite kod rensning
  • byggd med Cython 0.12.1 (slutlig)

Krav :

  • Python

Kommentarer till Acora

Kommentarer hittades inte
Kommentar
Slå på bilder!