CsC#

2017-04-18 6 views
0

에서 fscrawler와 NEST로 문서를 검색하는 ElasticSearch 파일 매핑 fscrawler 2.3-SNAPSHOT을 사용하여 "/ tmp/es"폴더에있는 문서를 색인 처리했습니다. 그것은 그들을 매핑 :CsC#

{ 
    "properties" : { 
    "attachment" : { 
     "type" : "binary", 
     "doc_values": false 
    }, 
    "attributes" : { 
     "properties" : { 
     "group" : { 
      "type" : "keyword" 
     }, 
     "owner" : { 
      "type" : "keyword" 
     } 
     } 
    }, 
    "content" : { 
     "type" : "text" 
    }, 
    "file" : { 
     "properties" : { 
     "content_type" : { 
      "type" : "keyword" 
     }, 
     "filename" : { 
      "type" : "keyword" 
     }, 
     "extension" : { 
      "type" : "keyword" 
     }, 
     "filesize" : { 
      "type" : "long" 
     }, 
     "indexed_chars" : { 
      "type" : "long" 
     }, 
     "indexing_date" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
     }, 
     "last_modified" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
     }, 
     "checksum": { 
      "type": "keyword" 
     }, 
     "url" : { 
      "type" : "keyword", 
      "index" : true 
     } 
     } 
    }, 
    "object" : { 
     "type" : "object" 
    }, 
    "meta" : { 
     "properties" : { 
     "author" : { 
      "type" : "text" 
     }, 
     "date" : { 
      "type" : "date", 
      "format" : "dateOptionalTime" 
     }, 
     "keywords" : { 
      "type" : "text" 
     }, 
     "title" : { 
      "type" : "text" 
     }, 
     "language" : { 
      "type" : "keyword" 
     } 
     } 
    }, 
    "path" : { 
     "properties" : { 
     "encoded" : { 
      "type" : "keyword" 
     }, 
     "real" : { 
      "type" : "keyword", 
      "fields": { 
      "tree": { 
       "type" : "text", 
       "analyzer": "fscrawler_path", 
       "fielddata": true 
      } 
      } 
     }, 
     "root" : { 
      "type" : "keyword" 
     }, 
     "virtual" : { 
      "type" : "keyword", 
      "fields": { 
      "tree": { 
       "type" : "text", 
       "analyzer": "fscrawler_path", 
       "fielddata": true 
      } 
      } 
     } 
     } 
    } 
    } 
} 

지금, 난 내 C# 응용 프로그램에서 NEST을 사용하여 검색 할, 내가 hit.source.content에 의해 내용를 얻을 수 있었다하지만 ... hit.source.filename에 의해

코드를 파일 이름을 얻을 수 없다 : 내가 hit.Source.urlhit.Source.filename로 라인을 언급 할 때

var response = elasticClient.Search<documents>(s => s 
       .Index("tanks") 
       .Type("doc") 
       .Query(q => q.QueryString(qs => qs.Query(query)))); 

      if (rtxSearchResult.Text != " ") 
      { 
       rtxSearchResult.Text = " "; 

       foreach (var hit in response.Hits) 
       { 


        rtxSearchResult.Text = rtxSearchResult.Text + ("Name: " + hit.Source.fileName.ToString() 
        + Environment.NewLine 
        + "Content: " + hit.Source.content.ToString() 
        + Environment.NewLine 
        + "URL: " + hit.Source.url.ToString() 
        + Environment.NewLine 
        + Environment.NewLine); 
       } 
      } 

위 NULLException하지만 실행을 던졌습니다.

키바 나는 파일 이름 필드를 file.filename, URL을 file.url, 내용을 content으로 표시합니다.

내 문서 클래스했다 : 파일 이름이 파일 아래에 중첩되기 때문에

, 내가

+0

'문서'형식이 어떻게됩니까? 보여줄 수 있습니까? –

답변

0

오류 발견 ... 이제 며칠 여기 붙어 도와주세요 ..를 검색 할 수 없습니다입니다

Class documents 
{ 
     Public string filename { get; set; } 

     Public string content { get; set; } 

     Public string url { get; set; } 
} 

파일 이름과 URL이 file.filenamefile.url 인 것처럼 파일 이름과 URL이 다른 클래스 파일이 필요했습니다.

Class documents 
{ 
     Public File file { get; set; } 

     Public string content { get; set; } 

} 

Class File 
{ 
      Public string filename { get; set; } 

      Public string url { get; set; } 
} 

그리고 그러므로 나는 hit.Source.file.filenamehit.Source.file.url에 의해에 액세스 할 수 있었다.