2017-07-12 4 views
1

Ich habe DSE 5.1, mit solr 6.0.1, auf CentOS 7.3.1611 (Core) installiert. Und UIMA in Eclipse für mein Annotator-Projekt konfiguriert.dse suche apache uima integration

Ich verfolge die Solr Dokumentation: https://wiki.apache.org/solr/Solr4UIMA

Das Projekt erstellt mit UIMA hat eine einfache annotator die Namen der Personen zu bekommen, arbeitet bereits fein in den CAS-Visuelle Debugger von UIMA. Und das jar ist bereits erstellt und kopiert in das Verzeichnis solr lib (DSE_HOME/solr/lib). Hier sind auch die jars von solr für die Integration von uima (SOLR_HOME/contrib/uima/lib, SOLR_HOME/contrib/uima/lucene-lib) , SOLR_HOME/dist/solr-uima-Version).

Meine Tabelle in cassandra erstellt ist:

CREATE TABLE uima_solr.person_annotator (
    id int PRIMARY KEY, 
    apellido text, 
    nombre text, 
    nombrecompleto text, 
    solr_query text, 
    uimaname set<text> 

Der solr Kern das Schema verwenden:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<schema name="autoSolrSchema" version="1.5"> 
    <types> 
    <fieldType class="org.apache.solr.schema.TextField" name="TextField"> 
     <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 
    <fieldType class="org.apache.solr.schema.TrieIntField" name="TrieIntField"/> 
    </types> 
    <fields> 
    <field indexed="true" multiValued="false" name="nombrecompleto" stored="true" type="TextField"/> 
    <field indexed="true" multiValued="false" name="apellido" stored="true" type="TextField"/> 
    <field indexed="true" multiValued="false" name="nombre" stored="true" type="TextField"/> 
    <field docValues="true" indexed="true" multiValued="false" name="id" stored="true" type="TrieIntField"/> 
    <field indexed="true" multiValued="false" name="all" stored="false" type="TextField"/> 
    <field indexed="true" multiValued="true" name="uimaname" stored="true" type="TextField"/> 
    </fields> 
    <uniqueKey>id</uniqueKey> 
    <defaultSearchField>all</defaultSearchField> 
    <copyField source="nombrecompleto" dest="all"/> 
    <copyField source="apellido" dest="all"/> 
    <copyField source="nombre" dest="all"/> 
</schema> 

Und die solr_config ist folgende:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<config> 
    <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError> 
    <luceneMatchVersion>LUCENE_6_0_0</luceneMatchVersion> 
    <dseTypeMappingVersion>2</dseTypeMappingVersion> 
    <directoryFactory class="solr.StandardDirectoryFactory" name="DirectoryFactory"/> 
    <indexConfig> 
    <rt>false</rt> 
    <useCompoundFile>false</useCompoundFile> 
    <ramBufferSizeMB>512</ramBufferSizeMB> 
    <mergeFactor>10</mergeFactor> 
    <reopenReaders>true</reopenReaders> 
    <deletionPolicy class="solr.SolrDeletionPolicy"> 
     <str name="maxCommitsToKeep">1</str> 
     <str name="maxOptimizedCommitsToKeep">0</str> 
    </deletionPolicy> 
    <infoStream file="INFOSTREAM.txt">false</infoStream> 
    </indexConfig> 
    <jmx/> 
    <updateHandler class="solr.DirectUpdateHandler2"> 
    <autoSoftCommit> 
     <maxTime>10000</maxTime> 
    </autoSoftCommit> 
    </updateHandler> 
    <query> 
    <maxBooleanClauses>1024</maxBooleanClauses> 
    <filterCache class="solr.SolrFilterCache" highWaterMarkMB="256" lowWaterMarkMB="128"/> 
    <enableLazyFieldLoading>true</enableLazyFieldLoading> 
    <useColdSearcher>true</useColdSearcher> 
    <maxWarmingSearchers>16</maxWarmingSearchers> 
    </query> 
    <requestDispatcher handleSelect="true"> 
    <requestParsers enableRemoteStreaming="true" multipartUploadLimitInKB="2048000"/> 
    <httpCaching never304="true"/> 
    </requestDispatcher> 
    <requestHandler class="solr.SearchHandler" default="true" name="search"> 
    <lst name="defaults"> 
     <int name="rows">10</int> 
    </lst> 
    </requestHandler> 
    <requestHandler class="com.datastax.bdp.search.solr.handler.component.CqlSearchHandler" name="solr_query"> 
    <lst name="defaults"> 
     <int name="rows">10</int> 
    </lst> 
    </requestHandler> 
    <!--<requestHandler class="solr.UpdateRequestHandler" name="/update"/>--> 
    <requestHandler class="solr.UpdateRequestHandler" name="/update/csv" startup="lazy"/> 
    <requestHandler class="solr.UpdateRequestHandler" name="/update/json" startup="lazy"/> 
    <requestHandler class="solr.FieldAnalysisRequestHandler" name="/analysis/field" startup="lazy"/> 
    <requestHandler class="solr.DocumentAnalysisRequestHandler" name="/analysis/document" startup="lazy"/> 
    <requestHandler class="solr.admin.AdminHandlers" name="/admin/"/> 
    <requestHandler class="solr.PingRequestHandler" name="/admin/ping"> 
    <lst name="invariants"> 
     <str name="qt">search</str> 
     <str name="q">solrpingquery</str> 
    </lst> 
    <lst name="defaults"> 
     <str name="echoParams">all</str> 
    </lst> 
    </requestHandler> 
    <requestHandler class="solr.DumpRequestHandler" name="/debug/dump"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <str name="echoHandler">true</str> 
    </lst> 
    </requestHandler> 
    <admin> 
    <defaultQuery>*:*</defaultQuery> 
    </admin> 



    <updateRequestProcessorChain default="true" name="uima"> 
    <processor class="org.apache.solr.uima.processor.UIMAUpdateRequestProcessorFactory"> 
     <lst name="uimaConfig"> 
     <lst name="runtimeParameters"></lst> 
     <!-- Under $SOLR_HOME/solr/example--> 
     <str name="analysisEngine">desc/descPersonAnnotator.xml</str> 
     <bool name="ignoreErrors">false</bool> 
     <lst name="analyzeFields"> 
      <bool name="merge">false</bool> 
      <arr name="fields"> 
      <str>nombrecompleto</str> 
      </arr> 
     </lst> 
     <lst name="fieldMappings"> 
      <lst name="type"> 
      <str name="name">org.apache.uima.annotator.person</str> 
      <lst name="mapping"> 
       <str name="feature">name</str> 
       <str name="field">uimaname</str> 
      </lst> 
      </lst> 
     </lst> 
     </lst> 
    </processor> 
    <processor class="solr.LogUpdateProcessorFactory"/> 
    <processor class="solr.RunUpdateProcessorFactory"/> 
    </updateRequestProcessorChain> 
    <requestHandler class="solr.UpdateRequestHandler" name="/update"> 
    <lst name="defaults"> 
     <str name="update.processor">uima</str> 
    </lst> 
    </requestHandler> 


</config> 

Wenn ich Daten einfügen Mit CQL wurden die Daten in Lucene korrekt indiziert, und die Suche funktioniert einwandfrei, aber der uima-Annotator ist nicht wor König. Auch wenn ich Dokumente in den Sol-Befehl trought, wird das Dokument erfolgreich indiziert und die Suche funktioniert auch in CQL, aber die Uima funktioniert auch nicht. Ich habe die Logs überprüft und es wird kein Fehler angezeigt.

Ich habe die gleiche Prozedur in der Solr Apache-Distribution (v6.0.1) und es funktioniert wie erwartet.

Ich sehe nicht die Kerndateien in DSE_HOME, um Dateien als convenience zu bearbeiten, und ich habe die UIMA-Integration in der DSE-Suche nicht erfolgreich gemacht. Was fehlt mir in der Core-Konfiguration der DSE-Suche?

Antwort

1

Fanden Sie die Antwort, indem Sie dem Solr-Dokumentationsverfahren nicht folgen, verwenden Sie stattdessen die DSE-Dokumentation, speziell die Update request processor and field transformer (FIT) [2017-07-17].

Ein Beispiel kann in DSE here [2017.07.17]

Das Verfahren bilden den Link oben zu finden zeigt, wie Felder, während die Indizierung abzubilden. Durch Erstellen eines jar, das das UIMA-Projekt an das FIT-Projekt anpasst, und Hinzufügen der Klassen zu solrconfig.xml

Diese Prozedur ermöglicht eine Suche mit Solr-Befehl und cql mit solr_query über die hinzugefügten Metadaten.