Esempio n. 1
0
def zsite2keyword(z):
    r = []
    t = defaultdict(int)
    id = z.id

    name = z.name
    if name:
        for word in seg_title_search(name):
            t[word] += 2

    url = url_by_id(id)
    if url:
        t[url] += 2

    if z.cid == CID_SITE:
        for word in seg_title_search(motto_get(id)):
            t[word] += 1

    elif z.cid == CID_USER:

        mail = mail_by_user_id(id)
        if mail:
            t[mail] += 2
            t[mail.split('@', 1)[0]] += 2


        txt = txt_get(id)

        if txt:
            man_txt_len = len(txt)

            for word in seg_txt_search(txt):
                t[word] += 1

        for seq, career in enumerate(career_list_all(id)):
            if seq:
                add = 1
            else:
                add = 2

            unit = career.unit
            title = career.title
            txt = career.txt

            if unit:
                for word in seg_title_search(unit):
                    t[word] += add

            if title:
                for word in seg_title_search(title):
                    t[word] += add
            if txt:
                for word in seg_txt_search(txt):
                    t[word] += add

    return t
Esempio n. 2
0
def zsite2keyword(z):
    r = []
    t = defaultdict(int)
    id = z.id

    name = z.name
    if name:
        for word in seg_title_search(name):
            t[word] += 2

    url = url_by_id(id)
    if url:
        t[url] += 2

    if z.cid == CID_SITE:
        for word in seg_title_search(motto_get(id)):
            t[word] += 1

    elif z.cid == CID_USER:

        mail = mail_by_user_id(id)
        if mail:
            t[mail] += 2
            t[mail.split('@', 1)[0]] += 2

        txt = txt_get(id)

        if txt:
            man_txt_len = len(txt)

            for word in seg_txt_search(txt):
                t[word] += 1

        for seq, career in enumerate(career_list_all(id)):
            if seq:
                add = 1
            else:
                add = 2

            unit = career.unit
            title = career.title
            txt = career.txt

            if unit:
                for word in seg_title_search(unit):
                    t[word] += add

            if title:
                for word in seg_title_search(title):
                    t[word] += add
            if txt:
                for word in seg_txt_search(txt):
                    t[word] += add

    return t
Esempio n. 3
0
def search(querystring, offset=0, pagesize=QUERY_PAGESIZE, enquire=SEARCH_ENQUIRE):
    # split querystring, get query
    query_list = []
    
    # parse query string
    items = defaultdict(int)
    for word in seg_title_search(querystring):
        items[word] += 1

    # get query
    for word, value in items.iteritems():
        query_item = xapian.Query(word, value)
        query_list.append(query_item)
    if 0 == len(query_list):
        return None
    elif len(query_list) != 1:
        query = xapian.Query(xapian.Query.OP_OR, query_list)
    else:
        query = query_list[0]

    # start to search
    enquire.set_query(query)
    matches = enquire.get_mset(offset, pagesize, None)
    return matches