.mr.developer.cfg
.idea/*
+data/backup
# If this is True, all tasks will be executed locally by blocking until the task returns.
CELERY_ALWAYS_EAGER=False
-REINDEX=True
+REINDEX=False
term = queryTerms.pop(0)
if term == "ET" or term == "OU":
if valeur != "":
- sqTab.append(('instruments__contains', valeur.strip()))
+ sqTab.append(('instruments__startswith', valeur.strip()))
valeur = ""
if term != operateur:
sqTab = [SQ(filtre) for filtre in sqTab]
else:
valeur += term + " "
if valeur != "":
- sqTab.append(('instruments__contains', valeur.strip()))
+ sqTab.append(('instruments__startswith', valeur.strip()))
sqTab = [SQ(filtre) for filtre in sqTab]
return SQ(reduce(operator.and_, sqTab) if operateur == "ET" else reduce(operator.or_, sqTab))
from haystack import indexes
from telemeta.models import *
+class KeywordField(indexes.CharField):
+ field_type = 'keyword'
+
class MediaItemIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
#advance search
title = indexes.CharField(model_attr='title')
- code = indexes.CharField(model_attr='code', default='')
+ code = KeywordField(model_attr='code', default='')
location_principal = indexes.CharField(null='None', boost=1.05)
location_relation = indexes.CharField()
ethnic_group = indexes.CharField(model_attr='ethnic_group', default='')
collectors = []
collectors.append(obj.collection.collector)
collectors.append(obj.collector)
- return u"".join(' ' + collector for collector in collectors)
+ return u"".join('; ' + collector for collector in collectors)
class MediaCollectionIndex(indexes.SearchIndex, indexes.Indexable):
#advance search
title = indexes.CharField(model_attr='title')
- code = indexes.CharField(model_attr='code', default='')
+ code = KeywordField(model_attr='code', default='')
location_principal = indexes.CharField(default='', boost=1.05)
location_relation = indexes.CharField()
ethnic_group = indexes.CharField(default='')
#advance search
title = indexes.CharField(model_attr='title')
- code = indexes.CharField(model_attr='code', default='')
+ code = KeywordField(model_attr='code', default='')
#location_principal = indexes.CharField(default='', boost=1.05)
#location_relation = indexes.CharField()
#ethnic_group = indexes.CharField(default='')
#advance search
title = indexes.CharField(model_attr='title')
- code = indexes.CharField(model_attr='code', default='')
+ code = KeywordField(model_attr='code', default='')
#location_principal = indexes.CharField(default='', boost=1.05)
#location_relation = indexes.CharField()
#ethnic_group = indexes.CharField(default='')
selecteur.each(function () {
var self = this;
$(this).autocomplete({
+ minLength: 3,
source: function (requete, reponse) {
$.ajax({
url: '/search/autocomplete/',
activerAutocompletion($('#id_code, #id_instruments, #id_collectors'));
+
+ $.tablesorter.addParser({
+ id: 'numerised',
+ is:function (s) {
+ return false;
+ },
+ format: function(s, table, cell){
+ var _class = $(cell).find('center span').attr('class');
+ _class = _class == undefined ? 1 : 0
+ alert(_class);
+ return _class;
+ },
+ type: 'number'
+ });
+
$.tablesorter.defaults.sortList = [[1,0]];
- $("#searchtable").tablesorter({headers: {0:{sorter:false}, 2:{sorter:false}}} );
+ $("#searchtable").tablesorter({
+ debug: true,
+
+ headers: {
+
+ 0:{sorter:false},
+ 2: {sorter: 'numerised'}
+ }
+
+ });
+
$('#dialog').dialog({
autoOpen: false,
class CustomElasticBackend(ElasticsearchSearchBackend):
def setup(self):
- DEFAULT_FIELD_MAPPING['analyzer']='snowball_asciifolding_analyzer'
+ DEFAULT_FIELD_MAPPING['analyzer']='whitespace_asciifolding_analyzer'
+ FIELD_MAPPINGS['keyword'] = {'type': 'string', 'analyzer':'lowercase_analyzer'}
eb = super(CustomElasticBackend, self)
- eb.DEFAULT_SETTINGS.get('settings').get('analysis').get('analyzer')['snowball_asciifolding_analyzer']=\
- {"type": "custom", "tokenizer": "letter", "filter": ["lowercase", "stop", "asciifolding"]}
+ eb.DEFAULT_SETTINGS.get('settings').get('analysis').get('tokenizer')['esc_scape_tokenizer']=\
+ {"type": "pattern", "pattern": "\\s|\\|"}
+ eb.DEFAULT_SETTINGS.get('settings').get('analysis').get('analyzer')['whitespace_asciifolding_analyzer']=\
+ {"type": "custom", "tokenizer": "esc_scape_tokenizer", "filter": ["lowercase", "word_delimiter", "asciifolding"]}
+ eb.DEFAULT_SETTINGS.get('settings').get('analysis').get('analyzer')['lowercase_analyzer'] = \
+ {"type": "custom", "tokenizer": "keyword", "filter": ["lowercase"]}
eb.setup()
def autocomplete(request):
sqs = SearchQuerySet().load_all()
if request.GET.get('attr', '') == "instruments":
- sqs = sqs.filter(instruments__contains=request.GET.get('q', ''))[:10]
+ sqs = sqs.filter(instruments__startswith=request.GET.get('q', ''))
instrus = [result.instruments for result in sqs]
suggestions = []
for chaine in instrus:
if word != "" and escapeAccentAndLower(request.GET.get('q', '')) in escapeAccentAndLower(word):
suggestions.append(word)
elif request.GET.get('attr', '') == "code":
- sqs = sqs.filter(code__contains=request.GET.get('q', ''))[:10]
+ sqs = sqs.filter(code__contains=request.GET.get('q', ''))
suggestions = [result.code for result in sqs]
elif request.GET.get('attr', '') == "collectors":
- sqs = sqs.filter(collectors__startswith=request.GET.get('q', ''))[:10]
- suggestions = [result.collectors for result in sqs]
+ sqs = sqs.filter(collectors__startswith=request.GET.get('q', ''))
+ collecteurs = [result.collectors for result in sqs]
+ suggestions = []
+ for chaine in collecteurs:
+ for word in chaine.split('; '):
+ if word != "" and escapeAccentAndLower(request.GET.get('q', '')) in escapeAccentAndLower(word):
+ suggestions.append(word)
else:
suggestions = []
- suggestions = list(set(suggestions))
+ if request.GET.get('attr', '') != 'code':
+ suggestions = list(set([word.strip().lower().title() for word in suggestions]))
+ else:
+ suggestions = list(set(suggestions))
+ suggestions.sort()
the_data = json.dumps({
'results': suggestions