public inbox for gentoo-portage-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Emma Strubell" <emma.strubell@gmail.com>
To: gentoo-portage-dev@lists.gentoo.org
Subject: Re: [gentoo-portage-dev] search functionality in emerge
Date: Sun, 23 Nov 2008 13:49:26 -0500	[thread overview]
Message-ID: <5a8c638a0811231049g56506b9flc0986705a24094f0@mail.gmail.com> (raw)
In-Reply-To: <c4cdc1420811230856r7b324426x59fd53288df46e80@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 2448 bytes --]

Wow, that's extremely helpful!! I happen to particularly enjoy tries, so the
suffix trie sounds like a great idea. The trie class example is really
helpful too, because this will be my first time programming in Python, and
it's a bit easier to figure out what's going on syntax-wise in that simple
trie class than in the middle of the portage source code!

Seriously, thanks again :]

On Sun, Nov 23, 2008 at 11:56 AM, Lucian Poston <lucianposton@gmail.com>wrote:

> > Thanks for the replies! I know there are a couple programs out there that
> > basically already do what I'm looking to do... Unfortunately I wasn't
> aware
> > of these pre-existing utilities until after I submitted my project
> proposal
> > to my professor. So, I'm looking to implement a better search myself.
> > Preferably by editing the existing portage code, not writing a separate
> > program. So if anyone can offer any help regarding the actual
> implementation
> > of search in portage, I would greatly appreciate it!
>
> Most of the search implementation is in
> /usr/lib/portage/pym/_emerge/__init__.py in class search.  The class's
> execute() method simply iterates over all packages (and descriptions
> and package sets) and matches against the searchkey.  You might need
> to look into pym/portage/dbapi/porttree.py for portdbapi as well.
>
> If you intend to index and support fast regex lookup, then you need to
> do some fancy indexing, which I'm not terribly familiar with.  You
> could follow in the steps of eix[1] or other indexed search utilities
> and design some sort of index layout, which is easier than the
> following thought.  You might consider implementing a suffix trie or
> similar that has sublinear regexp lookup and marshalling the structure
> for the index.  I couldn't find a python implementation for something
> like this, but here is a general trie class[2] that you might start
> with if you go that route.  There is a perl module[3],
> Tie::Hash::Regex, that does that, but properly implementing that in
> python would be a chore. :)
>
> That project sounds interesting and fun. Good luck!
>
> Lucian Poston
>
> [1] https://projects.gentooexperimental.org/eix/wiki/IndexFileLayout
> [2]
> http://www.koders.com/python/fid7B6BC1651A9E8BBA547552FE3F039479A4DECC45.aspx
> [3]
> http://search.cpan.org/~davecross/Tie-Hash-Regex-1.02/lib/Tie/Hash/Regex.pm<http://search.cpan.org/%7Edavecross/Tie-Hash-Regex-1.02/lib/Tie/Hash/Regex.pm>
>
>

[-- Attachment #2: Type: text/html, Size: 3124 bytes --]

  reply	other threads:[~2008-11-23 18:49 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-23 12:17 [gentoo-portage-dev] search functionality in emerge Emma Strubell
2008-11-23 14:01 ` tvali
2008-11-23 14:33   ` Pacho Ramos
2008-11-23 14:43     ` Emma Strubell
2008-11-23 16:56       ` Lucian Poston
2008-11-23 18:49         ` Emma Strubell [this message]
2008-11-23 20:00           ` tvali
2008-11-23 21:20           ` Mike Auty
2008-11-23 21:59             ` René 'Necoro' Neumann
2008-11-24  0:53               ` tvali
2008-11-24  9:34                 ` René 'Necoro' Neumann
2008-11-24  9:48                   ` Fabian Groffen
2008-11-24 14:30                     ` tvali
2008-11-24 15:14                       ` tvali
2008-11-24 15:15                       ` René 'Necoro' Neumann
2008-11-24 15:18                         ` tvali
2008-11-24 17:15                           ` tvali
2008-11-30 23:42                             ` Emma Strubell
2008-12-01  7:34                               ` [gentoo-portage-dev] " Duncan
2008-12-01 10:40                                 ` Emma Strubell
2008-12-01 17:52                                   ` Zac Medico
2008-12-01 21:25                                     ` Emma Strubell
2008-12-01 21:52                                       ` Tambet
2008-12-01 22:08                                         ` Emma Strubell
2008-12-01 22:17                                           ` René 'Necoro' Neumann
2008-12-01 22:47                                             ` Emma Strubell
2008-12-02  0:20                                               ` Tambet
2008-12-02  2:23                                                 ` Emma Strubell
2008-12-02 10:21                                                 ` Alec Warner
2008-12-02 12:42                                                   ` Tambet
2008-12-02 13:51                                                     ` Tambet
2008-12-02 19:54                                                     ` Alec Warner
2008-12-02 21:47                                                       ` Tambet
2008-12-02 17:42                                                   ` Tambet
2008-11-23 14:56     ` [gentoo-portage-dev] " Douglas Anderson
2008-11-24  3:12 ` Marius Mauch
2008-11-24  5:01   ` devsk
2008-11-24  6:25     ` Marius Mauch
2008-11-24  6:47     ` [gentoo-portage-dev] " Duncan
2009-02-12 19:16 ` [gentoo-portage-dev] " René 'Necoro' Neumann
     [not found]   ` <5a8c638a0902121258s7402d9d7l1ad2b9a8ecf9820d@mail.gmail.com>
2009-02-12 21:01     ` Fwd: " Emma Strubell
2009-02-12 21:05       ` Mike Auty
2009-02-12 21:14         ` Emma Strubell
2009-02-13 13:37       ` Marijn Schouten (hkBst)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5a8c638a0811231049g56506b9flc0986705a24094f0@mail.gmail.com \
    --to=emma.strubell@gmail.com \
    --cc=gentoo-portage-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox