Example #1
0
        /// <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();
 }