2017-02-11 1 views
0

私は検索エンジンを構築しようとしています。私はelasticsearchでPHPを使用しています。 フォルダ内のすべてのファイルを手動でベースコード化して索引付けすることはできません。 ファイルは主にWordまたはPDF形式です。私はこれを達成するための私の最近の試みのためのコードを追加しましたが、うまくいきませんでした。弾性検索:マッピングを使用して何千ものファイルのインデックスを作成するにはどうすればよいですか?

<?php 
    $dir_path="yellow"; 
    require 'vendor/autoload.php'; 
    $client= Elasticsearch\ClientBuilder::create()->build(); 
    if(is_dir($dir_path)) 
    { 
     $files=opendir($dir_path); 
     if($files) 
     { 
      while(($file_name= readdir($files))!== FALSE) 
      { 
       if($file_name!=="."&$file_name!=="..") 
       { 
     $params= [ 
     'index'=>'try', 
     'type'=>'mytype', 
     'body'=>[ 
     'my_attachment' =>[ 
      "cv" => base64_encode(file_get_contents("$dir_path/$file_name")) ] ] 
     ]; 

    $response= $client->index($params); 
    echo $response; 
       } 
      } 
     } 
    } 
?> 

このコードは、「お知らせを返して:代わりに確認を生成する文字列変換」エラーに配列事前

+0

ESの中で何を見たいのですか?各ESドキュメントはJSONフィールドと値を持つオブジェクト。 DOC/PDFファイルの解析方法が分かっている場合は、スクリプトを作成してファイルを1つずつ読み込んでESに挿入します。 ESのために何千もありません – Alexey

+0

DOCまたはPDFファイル内の指定されたキーワードを検索する検索エンジンを作成しようとしています。だから私は特定のキーワードが存在する文書を見つけるためにESを使うかもしれないように、特定のフォルダのすべてのdocファイルの内容を保存する必要があります。私はESのmapper-attachmentsプラグインを使用しています。編集に自分のコードを追加しました。 – Spade

答えて

0

で おかげで

'body' => [ 
    'my_attachment' => 
    base64_encode(file_get_contents("$dir_path/$file_name")) 
] 

'body'=>[ 
     'my_attachment' =>[ 
      "cv" => base64_encode(file_get_contents("$dir_path/$file_name")) ] ] 

を交換してください。

+0

それは役に立ちません。とにかくありがとう! – Spade

関連する問題