2012-04-09 5 views
1

Der Status des Datenimporthandlers zeigt an, dass er indiziert wurde und 10 Dokumente hinzugefügt wurden, aber kein Ergebnis angezeigt wird, wenn ich nach einem Wort suche, das Teil des hinzugefügten Dokuments ist. Wenn ich geben: auf der Suche zeigt es alle DatensätzeSolr zeigt kein Ergebnis nach dem Indexieren von Tabellensätzen

Beispiel clob Rekord:

<?xml version="1.0" encoding="UTF-8" ?> 
<message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="someurl" xmlns:csp="someurl.xsd" xsi:schemaLocation="somelocation jar: id="002" message-type="create"> 
<content> 
    <dsp:row> 
     <dsp:channel>100</dsp:channel> 
     <dsp:role>115</dsp:role>  
     </dsp:row> 
    <![CDATA[ <ol><li>java</li></ol><li>ASP</li>]]> 
</body></content></message> 

Daten-config.xml

<document name="doc"> 
      <entity name="MYCONTENT" transformer="ClobTransformer" 
         query="SELECT CID,XML FROM MYCONTENT"> 

       <field column="CID" name="CID"/> 
       <field column="XML" clob="true" name="XML"/>    
      </entity> 
     </document> 

schema.xml

<field name="CID" type="string" indexed="true" stored="true" required="true"/> 
    <field name="XML" type="string" indexed="true" stored="true" required="true"/> 
    <dynamicField name="*" type="ignored" /> 
    <uniqueKey>CID</uniqueKey> 
    <defaultSearchField>XML</defaultSearchField> 

solrconfig.xml

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
     <lst name="defaults"> 
      <str name="config">/data-config.xml</str> 
      <str name="rows">10</str>  
     </lst> 
     </requestHandler> 

Ich weiß nicht, warum es nicht Ergebnis zeigt, wenn ich nach "Java" "ASP" suche. Jede Hilfe wird sehr geschätzt.

Dank im Voraus
srini

Antwort

0

Sie haben zwei Dinge zu beheben.

Zunächst behandelt der Feldtyp "Zeichenfolge" das gesamte Dokument als ein einzelnes Token. Sie benötigen einen Textfeldtyp.

Zweitens analysiert Solr den XML-Code in Ihrem CLOB nicht, er indexiert ihn als Rohtext und teilt Token auf, wie von Ihrem Tokenizer-Token für dieses Feld angegeben. Wenn Sie beispielsweise einen Whitespace-Tokenizer verwenden, würde "115" als ein einzelnes Token behandelt und eine Suche nach "115" würde nicht übereinstimmen.

Zum Testen würde ich versuchen, die HTMLStripCharFilterFactory in dieser Felddefinition vor dem Tokenizer zu verwenden. Siehe: http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.HTMLStripCharFilterFactory

Das sollte eine beträchtliche Menge des XML entziehen. Wenn Sie es auf eine bestimmte Weise verarbeiten möchten, werden Sie wahrscheinlich etwas über XPathEntityProcessor lernen, das Teile des XML zur Indizierung extrahieren kann. Siehe: http://wiki.apache.org/solr/DataImportHandler#XPathEntityProcessor

+0

Ein bisschen mehr Informationen: Sie müssen einen Feldtyp für Text definieren oder anpassen. Die Beispieldatei schema.xml, die mit Solr 3.5 installiert wird, hat mehrere Arten von Textfeldern, "text_general" und "text_en" sind gute Startpunkte. Sie können eines davon verwenden und es dann anpassen. –