1

私の要件は、ファイルコンテンツ内を検索することです。単語が存在する場合、単語が存在するファイルコンテンツの特定の行を送信する必要があります。私は Solr-DIH を使用しており、行ごとに処理するために Line エンティティ プロセッサを使用しています。私のデータ構成ファイルは

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

1 に答える 1

2

ファイルをインポートしようとしていMicrosoft Wordます。これは、dataconfig: から確認できますfileName="sample.docx"

でこれを行うことはできませんFileListEntityProcessor。これは ASCII ファイルを対象としています。しかし、Word はバイナリ ファイル形式です。ExtractingRequestHandlerこの原因には を使用する必要があります。

出発点として、Lucid のドキュメントを参照するか、stackoverflow で検索してください

キーワードがヒットしたドキュメントのごく一部のみを表示するにはHighlighting、Solr の機能を使用します。

強調表示のしくみについて、ウェブ上でいくつかのリソースを見つけることができます

于 2013-09-12T16:50:53.520 に答える