예제 #1
0
 def facet_wrapper(self, facet, value, count):
     if facet == "publish_year":
         return [int(value), count]
     elif facet == "publisher_facet":
         return web.storage(name=value,
                            count=count,
                            key="/publishers/" + value.replace(" ", "_"))
     elif facet == "author_facet":
         author = read_author_facet(value)
         return web.storage(name=author[1],
                            key="/authors/" + author[0],
                            count=count)
     elif facet in [
             "subject_facet", "person_facet", "place_facet", "time_facet"
     ]:
         return web.storage(
             key=finddict(SUBJECTS, facet=facet).prefix +
             str_to_key(value).replace(" ", "_"),
             name=value,
             count=count,
         )
     elif facet == "has_fulltext":
         return [value, count]
     else:
         return web.storage(name=value, count=count)
예제 #2
0
def subject_count(field, subject):
    key = re_escape.sub(r'\\\1', str_to_key(subject)).encode('utf-8')
    data = urlopen('http://%s/solr/works/select?indent=on&wt=json&rows=0&q=%s_key:%s' % (solr_works, field, key)).read()
    try:
        ret = simplejson.loads(data)
    except:
        print data
        return 0
    return ret['response']['numFound']
예제 #3
0
def subject_count(field, subject):
    key = re_escape.sub(r"\\\1", str_to_key(subject)).encode("utf-8")
    data = urlopen("http://%s/solr/works/select?indent=on&wt=json&rows=0&q=%s_key:%s" % (solr_works, field, key)).read()
    try:
        ret = simplejson.loads(data)
    except:
        print data
        return 0
    return ret["response"]["numFound"]
예제 #4
0
def subject_count(field, subject):
    key = re_escape.sub(r'\\\1', str_to_key(subject)).encode('utf-8')
    data = urlopen(
        'http://%s/solr/works/select?indent=on&wt=json&rows=0&q=%s_key:%s' %
        (solr_works, field, key)).read()
    try:
        ret = simplejson.loads(data)
    except:
        print data
        return 0
    return ret['response']['numFound']
예제 #5
0
    def make_query(self, key, filters):
        meta = self.get_meta(key)

        q = {meta.facet_key: str_to_key(meta.path).lower()}

        if filters:
            if filters.get("has_fulltext") == "true":
                q['has_fulltext'] = "true"
            if filters.get("publish_year"):
                q['publish_year'] = filters['publish_year']

        return q
예제 #6
0
파일: code.py 프로젝트: strogo/openlibrary
    def make_query(self, key, filters):
        meta = self.get_meta(key)

        q = {meta.facet_key: str_to_key(meta.path).lower()}

        if filters:
            if filters.get("has_fulltext") == "true":
                q['has_fulltext'] = "true"
            if filters.get("publish_year"):
                q['publish_year'] = filters['publish_year']

        return q
예제 #7
0
 def facet_wrapper(self, facet, value, count):
     if facet == "publish_year":
         return [int(value), count]
     elif facet == "publisher_facet":
         return web.storage(name=value, count=count, key="/publishers/" + value.replace(" ", "_"))
     elif facet == "author_facet":
         author = read_author_facet(value)
         return web.storage(name=author[1], key="/authors/" + author[0], count=count)
     elif facet in ["subject_facet", "person_facet", "place_facet", "time_facet"]:
         return web.storage(key=finddict(SUBJECTS, facet=facet).prefix + str_to_key(value).replace(" ", "_"), name=value, count=count)
     elif facet == "has_fulltext":
         return [value, count]
     else:
         return web.storage(name=value, count=count)
예제 #8
0
def subject_count(field, subject):
    if len(subject) > 256:
        subject = subject[:256]
    key = re_escape.sub(r'\\\1', str_to_key(subject)).encode('utf-8')
    url = 'http://%s/solr/works/select?indent=on&wt=json&rows=0&q=%s_key:%s' % (solr_works, field, key)
    for attempt in range(5):
        try:
            data = urlopen(url).read()
            break
        except IOError:
            pass
        print 'exception in subject_count, retry, attempt:', attempt
        print url
    try:
        ret = simplejson.loads(data)
    except:
        print data
        return 0
    return ret['response']['numFound']
예제 #9
0
 def normalize_key(self, key):
     return str_to_key(key).lower()
예제 #10
0
 def normalize_key(self, key):
     return str_to_key(key).lower()
예제 #11
0
def test_str_to_key():
    assert str_to_key('x') == 'x'
    assert str_to_key('X') == 'x'
    assert str_to_key('[X]') == 'x'
    assert str_to_key('!@<X>;:') == '!x'
    assert str_to_key('!@(X);:') == '!(x)'
예제 #12
0
def test_str_to_key():
    assert str_to_key("x") == "x"
    assert str_to_key("X") == "x"
    assert str_to_key("[X]") == "x"
    assert str_to_key("!@<X>;:") == "!x"
    assert str_to_key("!@(X);:") == "!(x)"
예제 #13
0
def test_str_to_key():
    assert str_to_key('x') == 'x'
    assert str_to_key('X') == 'x'
    assert str_to_key('[X]') == 'x'
    assert str_to_key('!@<X>;:') == '!x'
    assert str_to_key('!@(X);:') == '!(x)'