Example #1
0
class FuzzySearchIndexMixin(indexes.SearchIndex):
    text_fuzzy = indexes.EdgeNgramField()

    def prepare(self, obj):
        prepared_data = super(FuzzySearchIndexMixin, self).prepare(obj)
        content = prepared_data[self.get_content_field()]
        prepared_data['text_fuzzy'] = content
        return prepared_data
Example #2
0
class ProductIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')
    category = indexes.CharField(model_attr='category', null=True)
    location = indexes.EdgeNgramField(model_attr='location', null=True)

    def get_model(self):
        return Product
Example #3
0
class ProductIndex(indexes.SearchIndex):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    name = CharField(model_attr='name')
    description = CharField(model_attr='description')

    #get_queryset is deprecated
    def index_queryset(self):
        return Product.objects.all()
class ResourceIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    published = indexes.DateField(model_attr='published')
    abstract = indexes.CharField(model_attr='abstract')
    review = indexes.CharField(model_attr='review')
    publisher = indexes.CharField(model_attr='publisher')
    journal = indexes.CharField(model_attr='journal')
    volume = indexes.IntegerField(model_attr='volume', null=True)
    number = indexes.IntegerField(model_attr='number', null=True)
    pages = indexes.CharField(model_attr='pages')
    series = indexes.CharField(model_attr='series')
    edition = indexes.CharField(model_attr='edition')
    url = indexes.CharField(model_attr='url')
    resource_type = indexes.CharField(model_attr='resource_type')
    categories = indexes.MultiValueField(indexed=True, stored=True)
    authors = indexes.MultiValueField(indexed=True, stored=True)
    editors = indexes.MultiValueField(indexed=True, stored=True)
    keywords = indexes.MultiValueField(indexed=True, stored=True)
    title = indexes.CharField(model_attr='title')
    subtitle = indexes.CharField(model_attr='subtitle')
    title_auto = indexes.EdgeNgramField(model_attr='title')
    subtitle_auto = indexes.EdgeNgramField(model_attr='subtitle')
    #A search with the 'author:'-tag will look through this field:
    author = indexes.CharField(indexed=True, stored=True)

    def get_model(self):
        return Resource

    def index_queryset(self, using=None):
        return self.get_model().objects.all()

    def prepare_categories(self, obj):
        return [c for c in obj.categories.all()]

    def prepare_authors(self, obj):
        return [a for a in obj.authors.all()]

    def prepare_editors(self, obj):
        return [e for e in obj.editors.all()]

    def prepare_keywords(self, obj):
        return [k for k in obj.keywords.all()]

    def prepare_author(self, obj):
        return (' '.join(
            [a.name for a in obj.authors.all() | obj.editors.all()]))
Example #5
0
class CarModelIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    price = indexes.IntegerField(model_attr='price')
    milage = indexes.IntegerField(model_attr='milage')
    content_auto = indexes.EdgeNgramField(model_attr='name')

    def get_model(self):
        return CarModel
Example #6
0
class ProductIndex(indexes.SearchIndex):
    """
    Abstract base class used to index all products for this shop
    """
    text = indexes.CharField(document=True, use_template=True)
    autocomplete = indexes.EdgeNgramField(use_template=True)
    product_name = indexes.CharField(stored=True,
                                     indexed=False,
                                     model_attr='product_name')
    product_url = indexes.CharField(stored=True,
                                    indexed=False,
                                    model_attr='get_absolute_url')
    categories = indexes.MultiValueField(stored=True, indexed=False)

    def get_model(self):
        """
        Hook to refer to the used Product model. Override this to create indices of
        specialized product models.
        """
        return ProductModel

    def prepare(self, product):
        if hasattr(product, 'translations'):
            product.set_current_language(self.language)
        with translation.override(self.language):
            data = super(ProductIndex, self).prepare(product)
        return data

    def prepare_categories(self, product):
        category_fields = getattr(product, 'category_fields', [])
        category_ids = set(page.pk for field in category_fields
                           for page in getattr(product, field).all())
        return category_ids

    def render_html(self, prefix, product, postfix):
        """
        Render a HTML snippet to be stored inside the index database, so that rendering of the
        product's list views can be performed without database queries.
        """
        app_label = product._meta.app_label.lower()
        params = [
            (app_label, prefix, product.product_model, postfix),
            (app_label, prefix, 'product', postfix),
            ('shop', prefix, 'product', postfix),
        ]
        template = select_template(
            ['{0}/products/{1}-{2}-{3}.html'.format(*p) for p in params])
        context = {'product': product}
        content = strip_spaces_between_tags(template.render(context).strip())
        return mark_safe(content)

    def index_queryset(self, using=None):
        """Used when the entire index for model is updated."""
        if using in dict(settings.LANGUAGES):
            self.language = using
        else:
            self.language = settings.LANGUAGE_CODE
        return self.get_model().objects.indexable()
class NoosferoCommunityIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True,
                                  use_template=True, stored=False)
    title = indexes.EdgeNgramField(model_attr='name')
    description = indexes.EdgeNgramField(model_attr='description', null=True)
    url = indexes.EdgeNgramField(model_attr='url', indexed=False)
    icon_name = indexes.EdgeNgramField()
    type = indexes.EdgeNgramField()
    modified = indexes.DateTimeField(model_attr='modified', null=True)
    created_at = indexes.DateTimeField(model_attr='created_at', null=True)
    category = indexes.MultiValueField()
    thumb_url = indexes.EdgeNgramField(model_attr='thumb_url', null=True)

    def prepare_category(self, obj):
        return obj.categories.values_list('name', flat=True)

    def prepare_icon_name(self, obj):
        return u'file'

    def get_ful_name(self):
        self.objs.name

    def get_model(self):
        return NoosferoCommunity

    def prepare_type(self, obj):
        return u'community'
Example #8
0
class CourseIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)

    def get_model(self):
        return Course

    def index_queryset(self, using=None):
        """ Used for indexing """
        return self.get_model().objects.all()
Example #9
0
class PostIndex(indexes.SearchIndex, indexes.Indexable):
    # 创建文章索引类
    text = indexes.EdgeNgramField(document=True, use_template=True)

    def get_model(self):
        return Post

    def index_queryset(self, using=None):
        return self.get_model().objects.all()
Example #10
0
class DataIndex(indexes.SearchIndex):
    text = indexes.CharField(document=True, use_template=True)
    text_auto = indexes.EdgeNgramField(use_template=True)

    def index_queryset(self, using=None):
        return self.get_model().objects.published()

    def load_all_queryset(self):
        return self.index_queryset()
Example #11
0
class NetworkSearchIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    name = indexes.EdgeNgramField(model_attr='name')

    def get_model(self):
        return Network

    def index_queryset(self, using=None):
        return Network.objects.all()
Example #12
0
class PodcastIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    description = indexes.CharField(model_attr='description')
    title = indexes.EdgeNgramField(model_attr='title')
    tags = indexes.EdgeNgramField(model_attr='tags')
    language = indexes.CharField(model_attr='language')
    content_area = indexes.CharField(model_attr='content_area')
    content_type = indexes.CharField(model_attr='content_type')

    def get_model(self):
        return Podcast

    def index_queryset(self, using=None):
        return self.get_model().objects.filter(
            created__lte=datetime.datetime.now())

    def prepare_tags(self, object):
        return [tag.name for tag in object.tags.all()]
Example #13
0
class MessageIndex(indexes.BasicSearchIndex, indexes.Indexable):
    content_auto = indexes.EdgeNgramField(model_attr='content')
    rendered = indexes.CharField(
        use_template=True,
        indexed=False,
        template_name='search/indexes/vestlus/message_rendered.txt')

    def get_model(self):
        return Message
class PostIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    content_auto = indexes.EdgeNgramField(model_attr='content')

    def get_model(self):
        return Post

    def index_queryset(self, using=None):
        return self.get_model().objects.all()
class EventoIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    text_auto = indexes.EdgeNgramField(model_attr='title')
    title = indexes.CharField(model_attr='title')
    name = indexes.CharField(model_attr='name')
    image_file = indexes.CharField(model_attr="image_file")

    def get_model(self):
        return Evento
class EstablecimientoIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True)
    nombre =  indexes.EdgeNgramField(model_attr='nombre')
    #nombre_auto =  indexes.EdgeNgramField(model_attr='nombre')
    email =  indexes.EdgeNgramField(model_attr='email')
    web_page = indexes.EdgeNgramField(model_attr='web_page')
    address= indexes.EdgeNgramField(model_attr='address')    
    sub_categorias = indexes.EdgeNgramField(model_attr='sub_categorias')
#    content_auto = indexes.EdgeNgramField(model_attr='nombre')

    def get_model(self):
        return Establecimiento

    
    def index_queryset(self, using=None):
        # using select_related here should avoid an extra query for getting
        # the manufacturer when indexing
        return self.get_model().objects.all().select_related('sub_categorias')
Example #17
0
class PostIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    published = indexes.BooleanField(model_attr='published')

    def get_model(self):
        return Post

    def index_queryset(self, using=None):
        return self.get_model().objects.filter(published=True)
Example #18
0
class ModuleIndex(indexes.SearchIndex):
    text = indexes.CharField(document=True, use_template=True)
    name_auto = indexes.EdgeNgramField(model_attr='autocomplete_name')

    def get_model(self):
        return Module

    def index_queryset(self):
        return Module.objects.filter(custom=False)
 class WordIndex(indexes.SearchIndex, indexes.Indexable):
     masculinitive1 = indexes.CharField(document=True, use_template=True)
     feminitive1 = indexes.CharField(document=True, use_template=True)

     #content for autocomplete
     content_auto = indexes.EdgeNgramField(model_attr='masculinitive1')

     def get_model(self):
         return Word
class ProfileIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)

    full_name = indexes.CharField(model_attr='full_name', null=True)
    full_name_auto = indexes.EdgeNgramField(model_attr='full_name', null=True)

    academy_name = indexes.CharField(model_attr='academy_name', null=True)
    academy_name_auto = indexes.EdgeNgramField(model_attr='academy_name',
                                               null=True)

    company_name = indexes.CharField(model_attr='company_name', null=True)
    company_name_auto = indexes.EdgeNgramField(model_attr='company_name',
                                               null=True)

    def get_model(self):
        return Profile

    def index_queryset(self, using=None):
        return self.get_model().objects.all()
Example #21
0
class VehicleIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    reg_number = indexes.CharField(model_attr='reg_number')
    make = indexes.CharField(model_attr='make')
    model = indexes.CharField(model_attr='model')
    vin = indexes.CharField(model_attr='vin')
    owner = indexes.CharField(model_attr='owner')

    def get_model(self):
        return Vehicle
Example #22
0
class PersonIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=False)
    name = AnalyzerCharField(model_attr="name", analyzer=IDTokenizer())
    name_auto = indexes.EdgeNgramField(model_attr="name")

    def get_model(self):
        return Person

    def index_queryset(self, using=None):
        return self.get_model().objects.all()
Example #23
0
class PageIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    date = indexes.DateTimeField(model_attr='modified_on')

    def get_model(self):
        return Page

    def index_queryset(self, using=None):
        return self.get_model().objects.filter(
            modified_on__lte=datetime.datetime.now())
Example #24
0
class InterestIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(model_attr='name', document=True)
    content_auto = indexes.EdgeNgramField(model_attr='name')
    url = indexes.CharField()

    def get_model(self):
        return Interest

    def prepare_url(self, obj):
        return obj.get_absolute_url()
class CampusIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    content_auto = indexes.EdgeNgramField(model_attr='name')

    def get_model(self):
        return Campus

    def index_queryset(self, using=None):
        # Used when the entire index for model is updated
        return self.get_model().objects.all()
Example #26
0
class UVIndex(indexes.SearchIndex, indexes.Indexable):
    """
    Indexer class for UVs
    """

    text = BigCharFieldIndex(document=True, use_template=True)
    auto = indexes.EdgeNgramField(use_template=True)

    def get_model(self):
        return UV
Example #27
0
class MainSearchIndex(indexes.SearchIndex, indexes.Indexable):
	text = indexes.CharField(document=True, use_template=True)
	url = indexes.CharField(model_attr='url', null=True)
	title = indexes.EdgeNgramField(model_attr='title', null=True)
	metadata = indexes.EdgeNgramField(model_attr='metadata', null=True)
	meta_keywords = indexes.CharField(model_attr='meta_keywords', null=True)
	context = indexes.EdgeNgramField(model_attr='context', null=True)
	suggestions = indexes.FacetCharField()

	def get_model(self):
		return MainData

	def index_queryset(self, using=None):
		return MainData.objects.filter(created__lte=datetime.datetime.now())

	def prepare(self, obj):
		prepared_data = super(MainSearchIndex, self).prepare(obj)
		prepared_data['suggestions'] = prepared_data['text']
		return prepared_data
Example #28
0
class CourseIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')
    title_auto = indexes.EdgeNgramField(model_attr='title')

    def get_model(self):
        return Course

    def index_queryset(self, using=None):
        return self.get_model().objects.all()
Example #29
0
class MeetingIndex(indexes.SearchIndex, indexes.Indexable):
    '''
    make a search_indexes for Django haystack to index the search items.
    '''

    text = indexes.EdgeNgramField(
        document=True, use_template=True,
        template_name='/Users/ceciliaxiang/TransparentGov/transgov/src/templates/search/indexes/Meeting_text.txt')
    committee = indexes.CharField(model_attr='committee', faceted=True)
    date = indexes.CharField(model_attr='date', faceted=True)
    title = indexes.EdgeNgramField(model_attr='title')
    location = indexes.CharField(model_attr='location', faceted=True)
    time = indexes.CharField(model_attr='time', faceted=True)
    attendees = indexes.CharField(model_attr='attendees', faceted=True)
    items = indexes.CharField(model_attr='items', faceted=True)
    url = indexes.CharField(model_attr='url', faceted=True)

    def get_model(self):
        return Meeting
Example #30
0
class ProductIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)
    pub_date = indexes.DateTimeField(model_attr='timestamp')
    content_auto = indexes.EdgeNgramField(model_attr='name')

    def get_model(self):
        return Products

    def index_queryset(self, using=None):
        return self.get_model().objects.all()