# -*- coding: utf-8 -*- # Copyright (c) Pilot Systems and Libération, 2010-2011 # This file is part of SeSQL. # SeSQL is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # Foobar is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with SeSQL. If not, see . # # Full text search configuration - we must define that before the imports, # because those are used by the imports # # Name of the PostgreSQL Text Search Configuration TS_CONFIG_NAME = "simple_french" # Name of the stopwards file, must be plain ASCII STOPWORDS_FILE = "ascii_french" # Global charset to use CHARSET = "utf-8" from sesql.fields import * from sesql.sources import * from django.db.models import Q from leaflet_storage import models # # Select the ORM to use # from sesql.orm.django import DjangoOrmAdapter orm = DjangoOrmAdapter() # # Fields and tables configuration # # Configuration of SeSQL search fields FIELDS = (ClassField("classname"), IntField("id"), DateField("modified_at"), FullTextField("name"), FullTextField("fulltext", ['name', 'description', SubField("owner", ["username"]) ], primary=True, ), DateField('indexed_at', sql_default='NOW()'), ) # Name of the global lookup table that should contain no real data MASTER_TABLE_NAME = "sesql_index" # Type map, associating Django classes to SeSQL tables TYPE_MAP = ((models.Map, "sesql_default"), ) # Additional indexes to create CROSS_INDEXES = () # # Cleanup configuration # from htmlentitydefs import name2codepoint from xml.sax import saxutils html_entities = dict([('&%s;' % k, unichr(v).encode(config.CHARSET)) for k,v in name2codepoint.items() ]) ADDITIONAL_CLEANUP_FUNCTION = lambda value: saxutils.unescape(value, html_entities) # # Query configuration # # General condition to skip indexing content SKIP_CONDITION = None # Default sort order for queries DEFAULT_ORDER = ('-modified_at',) # Default LIMIT in short queries DEFAULT_LIMIT = 20 # First we ask for the SMART_QUERY_INITIAL first sorted items SMART_QUERY_INITIAL = 2500 # Then, if we have at least SMART_QUERY_THRESOLD of our limit, we go on SMART_QUERY_THRESOLD = 0.35 # If we have a second query, we do * (wanted/result) * SMART_QUERY_RATIO SMART_QUERY_RATIO = 3.0 # # Long query cache configuration # # Maximal number of queries to store in the long query cache QUERY_CACHE_MAX_SIZE = 10000 # Life time of a query in the query cache QUERY_CACHE_EXPIRY = 24 * 3600 # # Daemon configuration # DAEMON_DEFAULT_CHUNK = 100 DAEMON_DEFAULT_DELAY = 120 DAEMON_DEFAULT_PID = '/var/run/sesql/update.pid' # # Suggest/history configuration # # default number of hit before including query in db HISTORY_DEFAULT_FILTER = 5 # erode factor for time-based decay of recent searches score HISTORY_ALPHA = 0.95 # weight of frequency of the search in the final score HISTORY_BETA = 1.0 # weight of number of results in the final score HISTORY_GAMMA = 1.0 # queries to ignore in history HISTORY_BLACKLIST = [] # # Enable sesql searches from Django admin ? # ENABLE_SESQL_ADMIN = False # # Enable to force all updates to be processed asynchronously by the daemon # ASYNCHRONOUS_INDEXING = False