def _open_index(self): """ Open the index. Lucene is lame about performance with potential multiple writers, so qwbasically treat open/close index as a stack """ if self._index is None: # Try to open the index for modifing. If the index doesn't exist, # this will fail, and we'll try again, this time letting PyLucene # create the directory. analyzer = PorterStemmerAnalyzer() try: self._index = PyLucene.IndexModifier( settings.SEARCH_INDEX_PATH, analyzer, False) except PyLucene.JavaError, e: if e.getJavaException().getClass().getName( ) == "java.io.IOException": self._index = PyLucene.IndexModifier( settings.SEARCH_INDEX_PATH, analyzer, True) else: raise self._index.setMaxFieldLength( 65526) # 64k ought to be enough for anyone...