Example #1
0
    def handle_search(self, action, data):
        self.searcher = component.getUtility(interfaces.IIndexSearch)()
        search_term = data['full_text']
        content_type = data['content_type']
        lang = data['language']
        indexed_field = data.get('field', '')
        status = data.get('status', '')
        status_date = data['status_date']
        owner = data.get('owner', '')

        if not lang:
            lang = 'en'

        if not search_term:
            self.status = _(u"Invalid Query")
            return

        # compose query
        t = time.time()

        if content_type and indexed_field and indexed_field != 'all':
            text_query = self.searcher.query_field(indexed_field, search_term)
            lang_query = self.searcher.query_field('language', lang)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (text_query, lang_query,))
        else:
            text_query = self.searcher.query_parse(search_term)
            lang_query = self.searcher.query_field('language', lang)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (text_query, lang_query,))

        if content_type:
            content_type_query = self.searcher.query_field(
                'object_type', content_type)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, content_type_query,))

        if content_type and status:
            status_query = self.searcher.query_field('status', status)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, status_query,))

        if status_date:
            status_date_query = self.searcher.query_field(
                'status_date', index.date_value(status_date))
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, status_date_query,))

        if owner:
            owner_query = self.searcher.query_field('owner', str(owner))
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, owner_query,))

        self.results = self._results
        self.search_time = time.time() - t

        # spelling suggestions
        suggestion = self.searcher.spell_correct(search_term)
        self.spelling_suggestion = (search_term != suggestion and suggestion
                                    or None)
Example #2
0
    def handle_search(self, action, data):
        self.searcher = component.getUtility(interfaces.IIndexSearch)()
        search_term = data[ 'full_text' ]
        content_type = data['content_type']
        lang = data['language']
        indexed_field = data.get('field', '')
        status = data.get('status', '')
        status_date = data['status_date']
        owner = data.get('owner', '')

        if not lang:
            lang = 'en'

        if not search_term:
            self.status = _(u"Invalid Query")
            return

        # compose query
        t = time.time()

        if content_type and indexed_field and indexed_field != 'all':
            text_query = self.searcher.query_field(indexed_field, search_term)
            lang_query = self.searcher.query_field('language', lang)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (text_query, lang_query,))
        else:
            text_query = self.searcher.query_parse(search_term)
            lang_query = self.searcher.query_field('language', lang)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (text_query, lang_query,))

        if content_type:
            content_type_query = self.searcher.query_field('object_type', content_type)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, content_type_query,))

        if content_type and status:
            status_query = self.searcher.query_field('status', status)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, status_query,))

        if status_date:
            status_date_query = self.searcher.query_field('status_date', index.date_value(status_date))
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, status_date_query,))
            
        if owner:
            owner_query = self.searcher.query_field('owner', str(owner))
            self.query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, owner_query,))

        self.results = self._results
        self.search_time = time.time() - t

        # spelling suggestions
        suggestion = self.searcher.spell_correct(search_term)
        self.spelling_suggestion = (
            search_term != suggestion and suggestion or None)
Example #3
0
    def handle_search(self, action, data):
        self.searcher = component.getUtility(interfaces.IIndexSearch)()
        search_term = data["full_text"]
        content_type = data["content_type"]
        lang = data["language"]
        indexed_field = data.get("field", "")
        status = data.get("status", "")
        status_date = data["status_date"]

        if not lang:
            lang = "en"

        if not search_term:
            self.status = _(u"Invalid Query")
            return

        # compose query
        t = time.time()

        if content_type and indexed_field and indexed_field != "all":
            text_query = self.searcher.query_field(indexed_field, search_term)
            lang_query = self.searcher.query_field("language", lang)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, (text_query, lang_query))
        else:
            text_query = self.searcher.query_parse(search_term)
            lang_query = self.searcher.query_field("language", lang)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, (text_query, lang_query))

        if content_type:
            content_type_query = self.searcher.query_field("object_type", content_type)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, (self.query, content_type_query))

        if content_type and status:
            status_query = self.searcher.query_field("status", status)
            self.query = self.searcher.query_composite(self.searcher.OP_AND, (self.query, status_query))

        if status_date:
            status_date_query = self.searcher.query_field("status_date", index.date_value(status_date))
            self.query = self.searcher.query_composite(self.searcher.OP_AND, (self.query, status_date_query))

        self.results = self._results
        self.search_time = time.time() - t

        # spelling suggestions
        suggestion = self.searcher.spell_correct(search_term)
        self.spelling_suggestion = search_term != suggestion and suggestion or None

        print self.query