Subversion Repositories SmartDukaan

Rev

Rev 3313 | Rev 3457 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3313 Rev 3440
Line 14... Line 14...
14
        
14
        
15
        dir = SimpleFSDirectory(File(self.indexDir))
15
        dir = SimpleFSDirectory(File(self.indexDir))
16
        self.analyzer = StandardAnalyzer(Version.LUCENE_30)
16
        self.analyzer = StandardAnalyzer(Version.LUCENE_30)
17
        self.searcher = IndexSearcher(dir)
17
        self.searcher = IndexSearcher(dir)
18
        self.MAX_RESULTS = 1000
18
        self.MAX_RESULTS = 1000
19
        
-
 
20
    
19
    
21
    def retrieve(self, model_number, model_name = None, brand = None):
20
    def retrieve(self, model_number, model_name = None, brand = None, synonyms = None):
22
        
-
 
23
        if model_number is None:  return
21
        if model_number is None:  return
24
        print model_number, model_name, brand
22
        print model_number, model_name, brand
25
        
23
        
26
        query_str = ''
24
        query_str = ''
27
        
25
        
Line 48... Line 46...
48
                    chunks.append(' '.join(chunk_parts))
46
                    chunks.append(' '.join(chunk_parts))
49
            
47
            
50
            query_model_number = (' OR '.join(chunks)).strip()
48
            query_model_number = (' OR '.join(chunks)).strip()
51
        else:
49
        else:
52
            query_model_number = ''
50
            query_model_number = ''
-
 
51
        
-
 
52
        query_synonyms = ' '.join(synonyms) if synonyms is not None else ''
53
            
53
        
54
        if query_model_name:
54
        if query_model_name:
55
            query_str = "%s AND (%s" % (query_brand, query_model_name)
55
            query_str = "%s AND (%s" % (query_brand, query_model_name)
56
        else:
56
        else:
57
            query_str = "%s AND (" % query_brand
57
            query_str = "%s AND (" % query_brand
58
        
58
        
59
        if query_model_number:
59
        if query_model_number:
60
            if query_model_name:
60
            if query_model_name:
61
                query_str += " OR %s)" % query_model_number
61
                query_str += " OR %s %s)" % (query_model_number, query_synonyms)
62
            else:
62
            else:
63
                query_str += " %s)" % query_model_number
63
                query_str += " %s %s)" % (query_model_number, query_synonyms)
64
        else:
64
        else:
65
            query_str += " )"
65
            query_str += " %s)" % query_synonyms
66
        
66
        
67
        print query_str
67
        print query_str
68
#        query = QueryParser(Version.LUCENE_30, "name", analyzer).parse(user_query)
68
#        query = QueryParser(Version.LUCENE_30, "name", analyzer).parse(user_query)
69
        qp = MultiFieldQueryParser(Version.LUCENE_30, ["name", "brand"], self.analyzer)
69
        qp = MultiFieldQueryParser(Version.LUCENE_30, ["name", "brand"], self.analyzer)
70
        query = qp.parse(qp, query_str)
70
        query = qp.parse(qp, query_str)
Line 96... Line 96...
96
        phones = []
96
        phones = []
97
        
97
        
98
        for hit in hits.scoreDocs:
98
        for hit in hits.scoreDocs:
99
            doc = self.searcher.doc(hit.doc)
99
            doc = self.searcher.doc(hit.doc)
100
            phones.append({
100
            phones.append({
101
                           "name": str(doc.get("name")),
101
                        'name': str(doc.get("name")),
102
                           "price": str(doc.get("price")),
102
                        'price': str(doc.get("price")),
103
                           'score': hit.score,
103
                        'score': hit.score,
104
                           'in_stock': str(doc.get("in_stock")),
104
                        'in_stock': str(doc.get("in_stock")),
105
                           'url': str(doc.get("url")),
105
                        'url': str(doc.get("url")),
106
                           'source': str(doc.get("source"))
106
                        'source': str(doc.get("source"))
107
                           })
107
                    })
108
        return phones
108
        return phones
109
 
109
 
110
if __name__ == "__main__":
110
if __name__ == "__main__":
111
    retriever = Retriever()
111
    retriever = Retriever()
112
#    print retriever.retrieve(model_number="9300", model_name = 'Curve 3G', brand="BlackBerry")
112
#    print retriever.retrieve(model_number="9300", model_name = 'Curve 3G', brand="BlackBerry")
113
    for phone in retriever.retrieveForQuery('source:letsbuy AND brand:blackberry'):
113
    print retriever.retrieveForQuery('brand:Lava')
114
        print phone
114
    #    print phone
115
    '''
115
    '''
116
    catalog_client = CatalogClient().get_client()
116
    catalog_client = CatalogClient().get_client()
117
    items = catalog_client.getAllItems(True)
117
    items = catalog_client.getAllItems(True)
118
    products = {}
118
    products = {}
119
    
119