/// <summary> /// Add documents. /// </summary> /// <param name="writer">The index writer.</param> /// <param name="facetWriter">The facet index writer.</param> /// <param name="facetData">The complete facet information used to build the index information.</param> public void AddDocuments(Lucene.Net.Index.IndexWriter writer, DirectoryTaxonomyWriter facetWriter, FacetData facetData) { // Build the facet configuration information. FacetsConfig config = new FacetsConfig(); // Builder hierarchicals. if (facetData.Hierarchicals != null && facetData.Hierarchicals.Length > 0) { // Add the config. foreach (FacetData.Hierarchical item in facetData.Hierarchicals) { config.SetHierarchical(item.DimensionName, item.IsHierarchical); } } // Builder index fields. if (facetData.IndexFields != null && facetData.IndexFields.Length > 0) { // Add the config. foreach (FacetData.IndexField item in facetData.IndexFields) { config.SetIndexFieldName(item.DimensionName, item.IndexFieldName); } } // Builder multi values. if (facetData.MultiValues != null && facetData.MultiValues.Length > 0) { // Add the config. foreach (FacetData.MultiValued item in facetData.MultiValues) { config.SetMultiValued(item.DimensionName, item.IsMultiValue); } } // Builder require dimension counts. if (facetData.RequireDimensionCounts != null && facetData.RequireDimensionCounts.Length > 0) { // Add the config. foreach (FacetData.RequireDimensionCount item in facetData.RequireDimensionCounts) { config.SetRequireDimCount(item.DimensionName, item.IsAccurateCountsRequired); } } // Add text data. if (facetData.TextFacetFields.Count > 0) { // Add the text. AddText(writer, facetWriter, facetData.TextFacetFields, config); } // Add file data. if (facetData.FileFacetFields.Count > 0) { // Add the file. AddFile(writer, facetWriter, facetData.FileFacetFields, config); } }
public async Task <IActionResult> FilterFacets(string facetname, FacetsFilteringRequest searchRequest) { // Calculate the response for each value. var response = new FacetsFilteringResponse(); response.Values = new List <FacetRecord>(); string[] commonList = new string[] { }; string[] list = new string[] { }; try { BlobStorageConfig config = _storageConfig.Copy(); config.ContainerName = config.FacetsFilteringContainerName; string s = await BlobStorageClient.ReadBlobAsync(config, "commonfilters.txt"); commonList = s.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries); s = await BlobStorageClient.ReadBlobAsync(config, string.Format("{0}.txt", facetname)); list = s.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries); } catch (Exception) { } Trace.TraceInformation("facet: " + facetname); Trace.TraceInformation("number of values:" + searchRequest.Values.Count); foreach (var record in searchRequest.Values) { if (record == null || record.RecordId == null) { continue; } FacetRecord responseRecord = new FacetRecord(); responseRecord.RecordId = record.RecordId; try { List <string> restrictionList = new List <string>(commonList); restrictionList.AddRange(list); var outputRecord = new FacetData(); outputRecord.Facets = new List <string>(); Trace.TraceInformation("number of facets:" + record.Data.Facets.Count); // replace all non-alphbic characters before comparision Regex rgx = new Regex("[^a-zA-Z0-9 ]"); for (int i = 0; i < restrictionList.Count; i++) { restrictionList[i] = rgx.Replace(restrictionList[i], "").ToLower(); } foreach (string phrase in record.Data.Facets) { var str = rgx.Replace(phrase, "").ToLower(); if (!string.IsNullOrEmpty(str)) { //lower case the first letter //str = Char.ToLower(str[0]) + str.Substring(1); if (!restrictionList.Contains(str)) { outputRecord.Facets.Add(phrase); } } } //UpdateGraph(outputRecord.Facets, facetname); responseRecord.Data = outputRecord; } catch (Exception e) { } finally { response.Values.Add(responseRecord); } } return(new OkObjectResult(response)); }
public void UpdateAll() { VertexData.UpdateData(); EdgeData.UpdateData(); FacetData.UpdateData(); }