J'essaie de faire fonctionner Apache Solr dans mon environnement zc.buildout.Problème d'ajout à l'index solr de Django en utilisant zc.buildout
J'ai défini un modèle simple:
class NewsItem(models.Model):
title = models.CharField(blank=False, max_length=255, help_text=u"Title of this news item")
slug = models.SlugField(blank=False, help_text=u"Slug will be automatically generated from the title")
article = models.TextField(help_text=u"The body text of this news item")
created_on = models.DateTimeField(auto_now_add = True)
updated_on = models.DateTimeField(auto_now = True)
published = models.BooleanField(default=True)
def __unicode__(self):
return self.title
search_index.py:
import datetime
from haystack.indexes import *
from haystack import site
from appname.models import *
class NewsItemIndex(RealTimeSearchIndex):
text = CharField(document=True, use_template=True)
def get_queryset(self):
"""Used when the entire index for model is updated."""
return NewsItem.objects.all()
site.register(NewsItem, NewsItemIndex)
Et search_sites.py
définit:
import haystack
haystack.autodiscover()
Le fichier de paramètres contient:
HAYSTACK_SITECONF = 'appname.search_sites'
HAYSTACK_SEARCH_ENGINE = 'solr'
HAYSTACK_SOLR_URL = 'http://127.0.0.1:8983/solr'
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 30
HAYSTACK_INCLUDE_SPELLING = True
'botte de foin est listé dans INSTALLED_APPS, pysolr est répertorié dans la liste install_requires »dans setup.py (offerts par buildout)
Mon buildout.cfg contient solr-files
, solr
, solr-conf
et supervisor
. J'ai ajouté ${buildout:directory}/solr-conf
aux chemins d'accès [mkdir]
.
Le superviseur et sections Solr en regard buildout.cfg comme ceci:
[supervisor]
recipe = collective.recipe.supervisor
port = localhost:9001
user = admin
password = admin
plugins =
superlance
# solr security settings: see
# http://docs.codehaus.org/display/JETTY/Connectors+slow+to+startup
programs =
10 solr (startsecs=10) java [-Djava.security.egd=file:/dev/urandom -jar start.jar] ${buildout:parts-directory}/solr true
eventlisteners =
SolrHttpOk TICK_60 ${buildout:bin-directory}/httpok [-p solr -t 20 http://localhost:8983/solr/]
[solr-files]
recipe = hexagonit.recipe.download
url = ftp://mir1.ovh.net/ftp.apache.org/dist/lucene/solr/1.3.0/apache-solr-1.3.0.tgz
md5sum = 23774b077598c6440d69016fed5cc810
strip-top-level-dir = true
[solr]
recipe = collective.recipe.solrinstance
solr-location = ${buildout:parts-directory}/solr-files
host = localhost
port = 8983
unique-key = uniqueID
default-search-field = text
index =
name:uniqueID type:string indexed:true stored:true required:true
name:text type:string indexed:true stored:true required:false omitnorms:false multivalued:true
[solr-conf]
recipe = iw.recipe.cmd
on_install = true
on_update = true
cmds =
cp -v ${buildout:directory}/solr-conf/jetty.xml ${solr:jetty-destination}
cp -v ${buildout:directory}/solr-conf/schema.xml ${solr:schema-destination}
cp -v ${buildout:directory}/solr-conf/stopwords_fr.txt ${solr:schema-destination}
[solr-rebuild]
recipe = iw.recipe.cmd
on_install = true
on_update = true
# since solr is not started by solr-instance but supervisord, solr-instance has
# no pid file and thinks that solr is down. Thus we must run it with
# solr-instance to be able to "solr-instance purge"
cmds =
${buildout:bin-directory}/supervisorctl stop solr
cp -v ${buildout:directory}/solr-conf/schema.xml ${solr:schema-destination}
${buildout:bin-directory}/solr-instance start
COUNT=15; echo "Waiting $COUNT s"; sleep $COUNT
${buildout:bin-directory}/solr-instance purge
time ${buildout:bin-directory}/${django:control-script} rebuild_index
${buildout:bin-directory}/solr-instance stop
${buildout:bin-directory}/supervisorctl start solr
Quand je lance $ bin/buildout install solr-rebuild
, je reçois la sortie suivante:
`/appname/solr-conf/schema.xml' -> `/appname/parts/solr/solr/conf/schema.xml'
Solr started with pid 16023
Waiting 15 s
SimplePostTool: version 1.2
SimplePostTool: WARNING: Make sure your XML documents are encoded in UTF-8, other encodings are not currently supported
SimplePostTool: POSTing args to http://localhost:8983/solr/update..
SimplePostTool: COMMITting Solr index changes..
WARNING: This will irreparably remove EVERYTHING from your search index.
Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
Are you sure you wish to continue? [y/N] y
Removing all documents from your index because you said so.
All documents removed.
Indexing 1 news items.
Failed to add documents to Solr: [Reason: ERROR:unknown field 'django_ct']
0.32user 0.05system 0:02.82elapsed 13%CPU (0avgtext+0avgdata 57872maxresident)k
160inputs+8outputs (3major+4257minor)pagefaults 0swaps
Solr stopped successfully.
De même, en cours d'exécution ou $ bin/django rebuild_index
$ bin/buildout update_index
se plaint 'django_ct':
Failed to add documents to Solr: [Reason: ERROR:unknown field 'django_ct']
(une chose que je vais essayer est mise à jour solr à la dernière version .. fera rapport si qui le fait ..)
Je ne sais pas où regarder à côté .. Recherche Google, les groupes et stackoverflow ne m'a pas dépassé ce point. Merci d'avance!