1

dataimporthandler 状态显示它已编入索引并添加了 10 个文档,但当我搜索属于添加文档的单词时未显示任何结果。如果我给出在搜索中它会显示所有记录

Clob 记录示例:

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

数据配置.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>

架构.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>

我不知道为什么当我搜索“Java”“ASP”时它没有显示结果。任何帮助是极大的赞赏。

在此先
感谢

4

1 回答 1

0

你有两件事要解决。

首先,“字符串”字段类型将整个文档视为单个标记。您需要一个文本字段类型。

其次,Solr 不会解析您的 CLOB 中的 XML,它会将其索引为原始文本,根据您为该字段选择的标记器指定的拆分标记。例如,如果您使用空格标记器,它会将“115”视为单个标记,并且搜索“115”将不匹配。

为了进行测试,我会尝试在标记器之前的该字段定义中使用 HTMLStripCharFilterFactory。请参阅:http ://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.HTMLStripCharFilterFactory

这应该剥离相当数量的 XML。如果您想以特定方式处理它,您可能想了解 XPathEntityProcessor,它可以提取部分 XML 用于索引。请参阅:http ://wiki.apache.org/solr/DataImportHandler#XPathEntityProcessor

于 2012-04-09T16:45:50.023 回答