* basic search utils
This commit is contained in:
@@ -0,0 +1,53 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2005, TUBITAK/UEKAE
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free
|
||||||
|
# Software Foundation; either version 2 of the License, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# Please read the COPYING file.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Author: Eray Ozkural <eray@uludag.org.tr>
|
||||||
|
|
||||||
|
import pisi
|
||||||
|
|
||||||
|
class Error(pisi.Error):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class Exception(pisi.Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
|
# API
|
||||||
|
|
||||||
|
from invertedindex import InvertedIndex
|
||||||
|
|
||||||
|
def init(ids, langs):
|
||||||
|
"initialize databases"
|
||||||
|
import pisi.context as ctx
|
||||||
|
|
||||||
|
ctx.invidx = {}
|
||||||
|
for id in ids:
|
||||||
|
ctx.invidx[id] = {}
|
||||||
|
for lang in langs:
|
||||||
|
ctx.invidx[id][lang] = InvertedIndex(id, lang)
|
||||||
|
|
||||||
|
def finalize():
|
||||||
|
import pisi.context as ctx
|
||||||
|
|
||||||
|
for id in ctx.invidx.iterkeys():
|
||||||
|
for lang in ctx.invidx[id].iterkeys():
|
||||||
|
ctx.invidx[id][lang].close()
|
||||||
|
|
||||||
|
ctx.invidx = {}
|
||||||
|
|
||||||
|
def add_doc(id, lang, docid, str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def remove_doc(id, lang, docid, str):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def query_terms(id, lang, terms):
|
||||||
|
pass
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2005, TUBITAK/UEKAE
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free
|
||||||
|
# Software Foundation; either version 2 of the License, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# Please read the COPYING file.
|
||||||
|
#
|
||||||
|
# Author: Eray Ozkural <eray@uludag.org.tr>
|
||||||
|
|
||||||
|
class InvertedIndex(object):
|
||||||
|
"""a database of term -> set of documents"""
|
||||||
|
|
||||||
|
def __init__(self, id, lang):
|
||||||
|
self.d = shelve.LockedDBShelf('ii-%s-%s' % (id, lang))
|
||||||
|
|
||||||
|
def close(self):
|
||||||
|
self.d.close()
|
||||||
|
|
||||||
|
def has_term(self, term):
|
||||||
|
return self.d.has_key(str(term))
|
||||||
|
|
||||||
|
def get_term(self, term):
|
||||||
|
term = str(term)
|
||||||
|
if not self.has_term(term):
|
||||||
|
self.d[term] = set()
|
||||||
|
return self.d[term]
|
||||||
|
|
||||||
|
def list_terms(self):
|
||||||
|
list = []
|
||||||
|
for term in self.d.iterkeys():
|
||||||
|
list.append(term)
|
||||||
|
return list
|
||||||
|
|
||||||
|
def add_doc(self, doc, terms):
|
||||||
|
for term_i in terms:
|
||||||
|
term_i_docs = self.get_term(term_i)
|
||||||
|
term_i_docs.add(doc)
|
||||||
|
self.d[term_i] = term_i_docs # update
|
||||||
|
|
||||||
|
def remove_doc(self, doc, terms):
|
||||||
|
for term_i in terms:
|
||||||
|
term_i_docs = self.get_term(term_i)
|
||||||
|
term_i_docs.remove(doc)
|
||||||
|
self.d[term_i] = term_i_docs # update
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
|
||||||
|
def preprocess(str, lang):
|
||||||
|
if
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# Copyright (C) 2005, TUBITAK/UEKAE
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it under
|
||||||
|
# the terms of the GNU General Public License as published by the Free
|
||||||
|
# Software Foundation; either version 2 of the License, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# Please read the COPYING file.
|
||||||
|
#
|
||||||
|
# Author: Eray Ozkural <eray@uludag.org.tr>
|
||||||
|
#
|
||||||
|
# rev 1: very little tokenization, for testing
|
||||||
|
|
||||||
|
def tokenize(lang, string):
|
||||||
|
pass
|
||||||
Reference in New Issue
Block a user