2006-07-19T00:01:38 <Kepplar> ThomasWaldmann: not if i have to manually edit things
2006-07-19T00:02:27 <Kepplar> felixw: as i said, apart from legacy =)
2006-07-19T00:02:47 <xorAxAx> felixw: he is using hungarian notation
2006-07-19T00:02:51 <Kepplar> just feels wierd to me using underscore for over here ---------> and camelcase over somewhere else
2006-07-19T00:02:57 <Kepplar> xorAxAx: im not
2006-07-19T00:03:09 <Kepplar> xorAxAx: im slowly phasing it out
2006-07-19T00:03:12 <xorAxAx> Kepplar: nice
2006-07-19T00:03:32 <Kepplar> as i said i only support system hungarian notation for mainly dynamic languages :p
2006-07-19T00:18:00 <xorAxAx> hmm, no usable locking in the pageeditor :-(
2006-07-19T00:18:06 <xorAxAx> Kepplar: but you will repair it :)
2006-07-19T00:18:22 <xorAxAx> Kepplar: furthermore, you should change the locking system for the old compat backend
2006-07-19T00:18:29 <xorAxAx> as there is no point in preserving it
2006-07-19T00:19:16 <Kepplar> ??
2006-07-19T00:19:29 <Kepplar> im heading to bed
2006-07-19T00:19:41 <Kepplar> feel free to spill what your thinking.. ill read it up in the morning
2006-07-19T00:19:42 <Kepplar> :)
2006-07-19T00:19:42 <Kepplar> nmn
2006-07-19T00:19:43 <Kepplar> n
2006-07-19T00:19:44 <Kepplar> n
2006-07-19T00:19:47 <Kepplar> even
2006-07-19T00:19:49 <Kepplar> bah
2006-07-19T00:19:52 <xorAxAx> Kepplar: that were my thoughts
2006-07-19T00:20:03 <xorAxAx> have a look at the locking module
2006-07-19T00:20:12 <xorAxAx> and dont try to emulate the old locking
2006-07-19T00:20:21 <xorAxAx> esp. i want to lock from outside as well
2006-07-19T00:36:21 <xorAxAx> 00:32:42 < xorAxAx> c:fOo bar c:Baz
2006-07-19T00:36:21 <xorAxAx> 00:32:48 < xorAxAx> would be transformed into
2006-07-19T00:36:21 <xorAxAx> 00:33:14 < xorAxAx> foo bar baz c:fOo c:Baz
2006-07-19T00:36:21 <xorAxAx> 00:33:26 < xorAxAx> the last two terms would be normal search terms
2006-07-19T00:36:35 <fpletz> my issues with moinSearch were that it was searching the terms all over again in the page
2006-07-19T00:36:46 <fpletz> this data could be saved in the xapian db while indexing
2006-07-19T00:36:48 <xorAxAx> fpletz: can you give an example?
2006-07-19T00:37:13 * johill goes back to lurking
2006-07-19T00:37:19 <fpletz> hmm
2006-07-19T00:37:28 <fpletz> there's not really something to demonstrate
2006-07-19T00:37:32 <fpletz> but let me explain
2006-07-19T00:37:49 <fpletz> moinSearch was basically searching all pages with a regexp
2006-07-19T00:38:16 <fpletz> from xapian we get all the relevant documents so we could completely bypass moinSearch
2006-07-19T00:38:30 <fpletz> originally we used it just for searching the relevant documents
2006-07-19T00:38:41 <fpletz> how many and where the matches where
2006-07-19T00:38:48 <xorAxAx> umm why?
2006-07-19T00:38:52 <fpletz> to do sorting and stuff
2006-07-19T00:38:59 <johill> doesn't xapian do that too?
2006-07-19T00:39:04 <fpletz> yes ;)
2006-07-19T00:39:18 <xorAxAx> i mean, the case is clear: yield moin-terms if xapian cannot handle them
2006-07-19T00:39:26 <xorAxAx> and then feed them to the search machinery
2006-07-19T00:39:33 <fpletz> xorAxAx: full ack ;)
2006-07-19T00:39:46 <xorAxAx> the query optimiser would generate those foo terms for c:FoO queries
2006-07-19T00:40:07 <fpletz> but the good thing is, that we get a preselection of pages from xapian
2006-07-19T00:40:14 <xorAxAx> fpletz: i am talking about that
2006-07-19T00:40:14 <fpletz> so the search should be a lot quicker
2006-07-19T00:40:23 <fpletz> yes ;)
2006-07-19T00:40:24 <xorAxAx> fpletz: and that should be done on the term level IMHO
2006-07-19T00:41:14 <fpletz> what do you mean by term level?
2006-07-19T00:41:31 <johill> you should actually divide up the example though
2006-07-19T00:41:35 <johill> c:fOo bar c:Baz
2006-07-19T00:41:36 <johill> becomes
2006-07-19T00:41:47 <johill> foo bar baz | c:fOo c:Baz
2006-07-19T00:41:54 <xorAxAx> not OR but AND
2006-07-19T00:41:54 <johill> and only the part after | is fed to moinSearch
2006-07-19T00:41:58 <xorAxAx> yes
2006-07-19T00:42:02 <johill> I didn't mean that as binary
2006-07-19T00:42:03 <johill> :)
2006-07-19T00:42:12 <fpletz> uh, yeah
2006-07-19T00:42:16 <xorAxAx> fpletz: that you dont code that into some class but into the query optimiser that operates on term instances
2006-07-19T00:42:23 <xorAxAx> fpletz: thats much more flexible
2006-07-19T00:42:25 <johill> that way, moinSearch doesn't need to see the 'bar' token at all
2006-07-19T00:42:44 <fpletz> ah, I see...
2006-07-19T00:42:57 <xorAxAx> much less code
2006-07-19T00:43:00 <johill> and the query code just says:
2006-07-19T00:43:08 <johill> give me xapian results for 'foo bar baz'
2006-07-19T00:43:19 <xorAxAx> johill: no
2006-07-19T00:43:27 <johill> and then: give me moinSearch results for 'c:fOo c:Baz' on the previous results
2006-07-19T00:43:31 <fpletz> I tend to agree with johill ;)
2006-07-19T00:43:42 <xorAxAx> thats too monolithic
2006-07-19T00:43:46 <xorAxAx> compared to the old model
2006-07-19T00:43:50 <xorAxAx> i.e. a regression
2006-07-19T00:44:01 <xorAxAx> fpletz: is there anything left of the old search engine? :)
2006-07-19T00:44:21 <johill> well
2006-07-19T00:44:23 <fpletz> xorAxAx: I haven't touched most of the old code ;)
2006-07-19T00:44:30 <fpletz> just plugged in the new one
2006-07-19T00:44:34 <johill> you could also assign 'prices' to each search engine
2006-07-19T00:44:35 <xorAxAx> fpletz: hehe ok
2006-07-19T00:44:40 <xorAxAx> johill: thats already done
2006-07-19T00:44:41 <johill> i.e. xapian is cheap, and moinSearch is expensive
2006-07-19T00:44:45 <johill> and then you query them in order
2006-07-19T00:44:49 <johill> each on the results of the previous one
2006-07-19T00:44:50 <xorAxAx> johill: and it has fulltext search hooks etc.
2006-07-19T00:45:11 <xorAxAx> the only problem is generating the xapian query from a tree build of terms
2006-07-19T00:45:25 <xorAxAx> but that should be possible as well
2006-07-19T00:45:44 <fpletz> mmh, this is no problem and implemented
2006-07-19T00:45:46 <johill> alright, I think I understand too little of how you did that all
2006-07-19T00:45:50 <fpletz> if I understood you correctly
2006-07-19T00:45:55 <xorAxAx> johill: the search engine is 1.3.0 :)
2006-07-19T00:46:00 <johill> either you have a query optimiser that queries the different things
2006-07-19T00:46:03 <xorAxAx> johill: so you could have seen it as well :)
2006-07-19T00:46:08 <johill> hehehe
2006-07-19T00:46:15 <johill> never looked, I have to admit
2006-07-19T00:46:32 <johill> or you just pass the query to the backends in order
2006-07-19T00:46:49 <johill> and then it becomes duty of the xapian searcher to convert the c:... things to lowercase
2006-07-19T00:47:01 <johill> and moinSearch starts over with the original query
2006-07-19T00:47:02 <xorAxAx> johill: no!
2006-07-19T00:47:06 <xorAxAx> ugly :)
2006-07-19T00:47:09 <fpletz> this is how it was done and currently could be done ;)
2006-07-19T00:47:10 <johill> yeah
2006-07-19T00:47:15 <xorAxAx> fpletz: "was"?
2006-07-19T00:47:25 <xorAxAx> fpletz: when was it done like that? :)
2006-07-19T00:47:27 <johill> xorAxAx: agreed
2006-07-19T00:47:41 <xorAxAx> in that secret thomas branch that was fortunately nnever published? ;-)
2006-07-19T00:47:41 <fpletz> xorAxAx: before I dropped moinSearch for most of the easy searches
2006-07-19T00:47:43 <johill> xorAxAx: I just don't see how you want an optimiser that isn't aware of the different backends
2006-07-19T00:47:47 <fpletz> thomas implemented this in his xapian branch
2006-07-19T00:47:52 <fpletz> yeah :D
2006-07-19T00:49:06 <xorAxAx> johill: the optimiser traverses all terms, sees that there is a c-term. then it could call some method that replaces that term by ( c-term AND c-term.lower() )
2006-07-19T00:49:17 <xorAxAx> johill: no idea where you place that interface
2006-07-19T00:49:20 <johill> xorAxAx: I understand that
2006-07-19T00:49:33 <johill> xorAxAx: I just don't understand how you want the optimiser to do that if it doesn't know it needs to
2006-07-19T00:49:39 <xorAxAx> and xapian would traverse all terms and build its query from that
2006-07-19T00:49:43 <xorAxAx> skip the unknown ones
2006-07-19T00:49:44 <fpletz> xorAxAx: this is done for contructing the xapian query
2006-07-19T00:49:48 <johill> i.e. if someone doesn't have xapian search installed it doesn't need to at all
2006-07-19T00:50:01 <xorAxAx> johill: yes, of course
2006-07-19T00:50:10 <fpletz> xapian doesn't build any queries because we can't use its queryparser
2006-07-19T00:50:20 <xorAxAx> fpletz: ah, ok
2006-07-19T00:50:34 <fpletz> I hooked in a custom queryparser in the moin qp
2006-07-19T00:50:34 <xorAxAx> fpletz: and how do you construct the query?
2006-07-19T00:50:36 <fpletz> we contruct xapian query-objects ourselves ;)
2006-07-19T00:50:44 <xorAxAx> by reading the query string?
2006-07-19T00:50:45 <johill> that's ok, then 'xapian' in this context is the python code that constructs it ;)
2006-07-19T00:50:49 <xorAxAx> or the term objects?
2006-07-19T00:50:59 <fpletz> xorAxAx: by traversing the term objects
2006-07-19T00:51:01 <xorAxAx> ok
2006-07-19T00:51:23 <xorAxAx> so terms could have a method supplied by a xapian mix-in ... no idea :)
2006-07-19T00:51:24 <johill> xorAxAx: ok, I suppose what you could do is have a rewrite_query call for each backend
2006-07-19T00:51:46 <johill> rewrite_query returns two new queries: one that it will do, and one that it cannot fulfill
2006-07-19T00:51:46 <xorAxAx> for example
2006-07-19T00:52:06 <xorAxAx> but this "thunking" into another search engine should be controlled in one placde
2006-07-19T00:52:10 <johill> e.g. the xapian.rewrite_query("foo c:bAr c:bAZ") would return
2006-07-19T00:52:14 <xorAxAx> that is not busy parsing or term constructing
2006-07-19T00:52:21 <xorAxAx> johill: no!
2006-07-19T00:52:23 <johill> ("foo bar baz", "c:bAr c:bAZ")
2006-07-19T00:52:29 <fpletz> no ;)
2006-07-19T00:52:30 <xorAxAx> johill: the query is parsed already
2006-07-19T00:52:33 <johill> well
2006-07-19T00:52:35 <fpletz> right ;)
2006-07-19T00:52:40 <johill> then make that the equivalent on the query tree
2006-07-19T00:52:44 <fpletz> we basically already have that code
2006-07-19T00:53:15 <johill> however that is represented
2006-07-19T00:53:42 <fpletz> yes, we can reduce the query tree to terms xapian cannot handle
2006-07-19T00:53:49 <fpletz> and make a regular moinSearch on them
2006-07-19T00:54:00 <fpletz> merging all matches from both search engines
2006-07-19T00:54:04 <johill> and( [caseinsensitive("foo"), casesensitive("bAr"), ...] )
2006-07-19T00:54:37 <fpletz> yup
2006-07-19T00:54:37 <fpletz> I'm putting this right on top of my todo list
2006-07-19T00:54:44 <fpletz> along the subpage issue
2006-07-19T00:54:57 <johill> and then the xapian.rewrite_query actually returns
2006-07-19T00:55:31 <johill> ( and( [ci("foo"), ci("bar"), ci("baz")] ), and ([cs("bAr"), cs("bAZ") ]) )
2006-07-19T00:55:55 <johill> and the second part of that pair is passed to the next rewrite_query
2006-07-19T00:56:20 <johill> or you could just change the search interface
2006-07-19T00:56:49 <johill> xapian.search(expression-tree) would not just return the list of hits however that is represented, but also a (possibly empty) tree of search terms it couldn't honour
2006-07-19T00:57:27 <johill> and if the tree isn't empty, then you pass the list of hits along with the remaining query tree to the next search
2006-07-19T00:58:03 <johill> note that I'm just talking on a very high level here without having a clue ;)
2006-07-19T00:58:12 <fpletz> right, perfect, that was the idea ;)
2006-07-19T00:58:52 <fpletz> but currently we just have 2 search engines, so a general implemenation of the principle might be overkill
2006-07-19T00:59:08 <johill> it shouldn't be hard
2006-07-19T00:59:21 <johill> you have to have the code somewhere anyway
2006-07-19T00:59:29 <johill> and putting it like this into the relevant modules makes the most sense ;)
2006-07-19T00:59:59 <johill> make sure you think of the corner cases
2006-07-19T01:00:02 <fpletz> mmh, right
2006-07-19T01:00:10 <xorAxAx> fpletz: as long as there is no duplication of code and ideas ....
2006-07-19T01:00:14 <johill> if I enter an expression like "c:fOoOo c:bArAr"
2006-07-19T01:00:22 <johill> eh wait
2006-07-19T01:00:24 <johill> that was dumb
2006-07-19T01:00:46 <fpletz> xorAxAx: there shouldn't as far as I can see now
2006-07-19T01:00:47 <johill> lets say you have some sort of search that xapian cannot fulfill at all
2006-07-19T01:01:01 <johill> not sure if there's any such search but lets assume for the sake of this example that there is
2006-07-19T01:01:04 <fpletz> like certein kinds of regexp
2006-07-19T01:01:08 <fpletz> -e+a
2006-07-19T01:01:16 <johill> right
2006-07-19T01:01:24 <johill> then the xapian searcher should not have to build a list of all pages to pass on to the next searcher
2006-07-19T01:01:40 <johill> it should just return 'not possible' instead of a list of hits/modified terms
2006-07-19T01:01:51 <xorAxAx> NotImplemented :)
2006-07-19T01:01:58 <xorAxAx> yeah, that sounds like coercion protocoll :)
2006-07-19T01:02:09 <fpletz> yes, right
2006-07-19T01:02:10 <johill> no, NotImplemented is bad
2006-07-19T01:02:20 <xorAxAx> johill: why? %-)
2006-07-19T01:02:26 <johill> too generic
2006-07-19T01:02:47 <johill> just personal preference I guess, I don't like NotImplemented for something that depends on the input data
2006-07-19T01:02:50 <fpletz> but xapian could at least search for other terms in the query
2006-07-19T01:03:03 <xorAxAx> johill: do you know the 2.1 coercion protocoll in python?
2006-07-19T01:03:17 <johill> no, any quick link?
2006-07-19T01:03:36 <xorAxAx> http://docs.python.org/ref/coercion-rules.html
2006-07-19T01:03:45 <xorAxAx> one of the dirtiest things :)
2006-07-19T01:05:35 <johill> heh
2006-07-19T01:06:22 <johill> I don't see what part sounds like coercion here though ;)
2006-07-19T01:07:34 <xorAxAx> xapian terms are coerced to normal terms or something like that :)
2006-07-19T01:08:53 <johill> heh
2006-07-19T01:09:05 <xorAxAx> ThomasWaldmann: your i18n script didnt update ar
2006-07-19T01:09:09 <johill> anyway, I just wanted to point out that there must be some protocol to return "I can't do anything"
2006-07-19T01:17:14 <johill> (so that it doesn't have to build a list of all pages and return that long with the same terms)
2006-07-19T01:17:21 <johill> and now, I think I'll get some sleep :)
2006-07-19T01:17:25 <xorAxAx> me too
2006-07-19T01:18:26 <fpletz> good idea.. just have to finish up this movie ;)
2006-07-19T08:57:24 <ThomasWaldmann> moin
2006-07-19T09:29:50 <fpletz> moin
2006-07-19T09:36:12 <ThomasWaldmann> fpletz: you forgot your "daily CHANGES entry" for yesterday
2006-07-19T09:36:58 <ThomasWaldmann> fpletz: ignore, was looking at wrong changeset
2006-07-19T09:37:12 <fpletz> ok :)
2006-07-19T09:37:21 <fpletz> I did a merge after my changes
2006-07-19T09:44:56 <ThomasWaldmann> xorAxAx: I guess you didnt "forget" it, so I added a note to your CHANGES. Feel free to improve that entry today.
2006-07-19T10:21:51 <Kepplar> moin
2006-07-19T22:34:17 <Kepplar> this is stupid
2006-07-19T22:34:22 <Kepplar> its way too hot to concentrate
2006-07-19T22:35:12 <felixw> Yup. It's like 30 degree C here.
2006-07-19T22:35:29 <felixw> Or 27 maybe.
2006-07-19T22:36:05 <felixw> Yup, it's 27 according to the LuX bot.
2006-07-19T22:37:59 <Kepplar> ive done virtually no work today
2006-07-19T22:38:02 <Kepplar> cant concentrate
2006-07-19T22:38:08 <Kepplar> littereallykeep falling alseep
2006-07-19T22:40:49 <Kepplar> # mimetype stuff ------------------------------------------------------------
2006-07-19T22:40:49 <Kepplar> class MimeType(object):
2006-07-19T22:40:49 <Kepplar> <<<<<<< /home/kepplar/dev/moinmoin/storage/MoinMoin/wikiutil.py """ Represents a mimetype like text/plain """
2006-07-19T22:40:52 <Kepplar> ======= """ represents a mimetype like text/plain """
2006-07-19T22:40:55 <Kepplar> >>>>>>> /tmp/wikiutil.py~other.gjt4ox def __init__(self, mimestr=None, filename=None):
2006-07-19T22:40:58 <Kepplar> what does that mean?
2006-07-19T22:44:52 <felixw> Kepplar: That looks like a merge conflict (did you mean that?).
2006-07-19T22:45:32 <felixw> Just edit it so that it looks "right", if you will.
2006-07-19T22:45:52 <Kepplar> sorted it now
2006-07-19T22:45:56 <Kepplar> wasnt sure ont he toation
2006-07-19T22:46:13 <Kepplar> as its just one letter thats the difference, i didnt see how it was a merge problem O_o
2006-07-19T22:47:04 <Kepplar> searching for changes is hanging
2006-07-19T22:47:07 <Kepplar> when i push
2006-07-19T22:47:30 <Kepplar> ah
2006-07-19T22:47:31 <Kepplar> nm
2006-07-19T23:05:54 <xorAxAx> Kepplar: just use a graphical client as i said
2006-07-19T23:08:12 <Kepplar> if hg had a full graphics UI like svn then I will:)
2006-07-19T23:09:52 <xorAxAx> Kepplar: there are many graphical clients that do the merging for you
2006-07-19T23:10:37 <Kepplar> and they arent fiddily to set up and use?
2006-07-19T23:10:40 <Kepplar> hmm
2006-07-19T23:10:49 <Kepplar> do i have to have an __init__.py for every directory?
2006-07-19T23:10:56 <Kepplar> from MoinMoin.storage import storage, flatfile
2006-07-19T23:10:57 <Kepplar> appears to be invalid
2006-07-19T23:11:56 <xorAxAx> Kepplar: not at all, they work out of the box
2006-07-19T23:12:05 <Kepplar> kdiff3 wasnt it?
2006-07-19T23:12:29 <Kepplar> that sounds like a kde application
2006-07-19T23:12:29 <xorAxAx> for example
2006-07-19T23:12:32 <Kepplar> qt --
2006-07-19T23:12:42 <xorAxAx> there are at least 5 supported ones
2006-07-19T23:12:44 <xorAxAx> RTFM
2006-07-19T23:12:45 <Kepplar> cool
MoinMoin: MoinMoinChat/Logs/moin-dev/2006-07-19 (last edited 2007-10-29 19:08:34 by localhost)