我的要求是在文件内容中搜索,如果存在该单词,则必须发送该单词所在的文件内容的特定行。我使用了 Solr-DIH 并且逐行处理我正在使用 Line entity Processor。我的数据配置文件是
<dataConfig>
<dataSource type="FileDataSource" name = "fds"/>
<document>
<entity name="filelist" processor="FileListEntityProcessor" fileName="sample.docx"
rootEntity="false" baseDir="C:\SampleDocuments" >
<entity name="fileline" processor="LineEntityProcessor"
url="${filelist.fileAbsolutePath}" format="text">
<field column="linecontent" name="rawLine"/>
</entity>
</entity>
</document>
schema.xml 有条目或 rawLine。
<field name="rawLine" type="text" indexed="true" stored="true"/>
我可以进行完全导入,但即使文档中只有 3 行,它也会创建大约 52 个文档,并且如果我正在搜索文档中已经存在的内容,则响应仍然为 0。请帮助我这是因为我无法在线路实体处理器上找到太多信息。
编辑 1 个字段类型text
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"
catenateWords="0" catenateNumbers="0" catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"
catenateWords="0" catenateNumbers="0" catenateAll="0"
splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>