2012-04-09 4 views
1

dataimporthandlerのステータスが索引付きであり、10個の文書が追加されていますが、追加された文書の一部である単語を検索すると結果が表示されません。私はを与える場合:検索では、すべてのレコードにCLOBレコードのテーブルレコードの索引付け後にSolrが結果を表示しない

例表示されます。

<?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> 

データ-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

"Java" "ASP"を検索すると、なぜ結果が表示されないのか分かりません。どんな助けでも大歓迎です。事前に

おかげ
srini

答えて

0

あなたが解決するには、2つのものを持っています。

まず、「文字列」フィールドタイプはドキュメント全体を単一のトークンとして扱います。テキストフィールドタイプが必要です。

第2に、SolrはCLOB内のXMLを解析せず、そのフィールドのトークナイザの選択に従って指定されたトークンを生テキストとしてインデックス付けします。たとえば、空白トークナイザを使用した場合、 "115"は単一のトークンとして扱われ、 "115"の検索は一致しません。

テストのために、トークン化ツールの前にそのフィールド定義でHTMLStripCharFilterFactoryを使用してみます。参照:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.HTMLStripCharFilterFactory

かなりの量のXMLを削除する必要があります。特定の方法で処理したい場合は、おそらくXPathEntityProcessorについて知りたいでしょう。これは、XMLの一部を抽出して索引付けすることができます。参照:http://wiki.apache.org/solr/DataImportHandler#XPathEntityProcessor

+0

さらに詳しい情報:テキストのフィールドタイプを定義またはカスタマイズする必要があります。 Solr 3.5でインストールされたexample schema.xmlファイルには、いくつかの種類のテキストフィールドがあります。「text_general」および「text_en」は、開始するのに適しています。そのうちの1つを使用してカスタマイズすることができます。 –

関連する問題