2017-12-12 1 views
0

두 개의 문서가 각각 2 개의 태그로 구성되어 있다고 가정 해 보겠습니다.Lucene.net 4.8 : 중요한면을 추가하는 순서?

문서 1 : 태그 1 태그 2 문서 2 : 태그 2 태그 1

이 같은 루씬에서 문서를 짓고 있어요 :

 var doc = new Document 
     { 
      new StoredField("Id", blogPost.Id), 
      new Int32Field("ModuleId", blogPost.ModuleId, Field.Store.YES), 
      new TextField("Title", blogPost.Title, Field.Store.YES), 
      new StringField("Slug", blogPost.Slug, Field.Store.YES), 
      new StoredField("ImagePath", blogPost.ImagePath), 
      new TextField("Intro", blogPost.Intro, Field.Store.YES), 
      new TextField("Html", blogPost.Title, Field.Store.YES), 
      new Int64Field("PublishDate", blogPost.PublishDate.Ticks, Field.Store.YES), 
      new FacetField("PublishDateTag", blogPost.PublishDate.Year.ToString(), blogPost.PublishDate.Month.ToString(), blogPost.PublishDate.Year.ToString()) 
     }; 

     foreach (var tag in blogPost.TagObjects) 
     { 
      doc.Add(new Int32AssociationFacetField(1,"Tags", tag.Name)); 
      doc.Add(new StringField("Tag", tag.Name, Field.Store.YES)); 

      doc.Add(new Int32AssociationFacetField(1, "TagSlugs", tag.Slug)); 
      doc.Add(new StringField("TagSlug", tag.Slug, Field.Store.YES)); 

측면을 얻기 나는대로 작동하지 않는 힘들어. 나는이 같은 검색을 수행 할 때 :

 var facetsConfig = ConfigFacets(); 

     IList<FacetResult> results = new List<FacetResult>(); 

     using (var indexReader = DirectoryReader.Open(IndexDir)) 
     using (var taxoReader = new DirectoryTaxonomyReader(TaxoDir)) 
     { 
      var searcher = new IndexSearcher(indexReader); 
      var facetsCollector = new FacetsCollector(); 

      // MatchAllDocsQuery is for "browsing" (counts facets 
      // for all non-deleted docs in the index); normally 
      // you'd use a "normal" query: 
      FacetsCollector.Search(searcher, new MatchAllDocsQuery(), 10, facetsCollector); 

      // Retrieve results 
      Facets tags = new TaxonomyFacetSumInt32Associations("$tag", taxoReader, facetsConfig, facetsCollector); 
      results.Add(tags.GetTopChildren(10, "Tags")); 

     } // Disposes indexReader and taxoReader 

     if (results[0] == null) 
      return new Dictionary<string, int>(); 

     return results.Where(x => x.Dim == "Tags").SelectMany(x => x.LabelValues).ToDictionary(x => x.Label, x => Convert.ToInt32(x.Value)); 

는 다음과 같은 결과가된다 : (1), 태그 (1) (1), 태그 (2) (1), 태그 (2) (1)

그것은 보이는 태그 1 태그의 순서가 어떻게 든 역할을하는 것처럼, 나는 전체적으로 원하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

나를 도울 수있는 사람은 누구입니까? :( – brechtvhb

답변

0

Goddamnit! 어리석은 실수로 밝혀졌습니다.

나는 문자열을 나눌 수는 있지만 이후에 트리밍하지 않았습니다. 그래서 첫 번째 문서에는 "태그 1", "태그 2", 두 번째 문서에는 "태그 2, 태그 1"이 추가되었습니다.