/// <summary> /// Adds the facet queries. /// </summary> /// <param name="param">The param.</param> /// <param name="fieldName">Name of the field.</param> /// <param name="values">The values.</param> private void AddFacetQueries( Facets <ESDocument> param, string fieldName, IEnumerable <AttributeFilterValue> values, ISearchCriteria criteria) { if (values == null) { return; } var ffilter = new BoolFilter <ESDocument>(); foreach (var f in criteria.CurrentFilters) { if (!f.Key.Equals(fieldName)) { var q = ElasticQueryHelper.CreateQuery(criteria, f); ffilter.Must(ff => ff.Bool(bb => q)); } } var facetFilter = new FacetFilter <ESDocument>(); facetFilter.Bool(f => ffilter); //var filter = new FacetFilter<ESDocument>(); //facetFilter.Terms(x => x.Values(values.Select(y => y.Value).ToArray())); //var filterFacet = new FilterFacet<ESDocument>(); //filterFacet.FacetName(fieldName.ToLower()).FacetFilter(f => facetFilter); param.Terms(t => t.FacetName(fieldName.ToLower()).Field(fieldName.ToLower()).FacetFilter(ff => facetFilter)); }
/// <summary> /// Adds the facet queries. /// </summary> /// <param name="param">The param.</param> /// <param name="fieldName">Name of the field.</param> /// <param name="values">The values.</param> private void AddFacetQueries(Facets <ESDocument> param, string fieldName, IEnumerable <RangeFilterValue> values, ISearchCriteria criteria) { if (values == null) { return; } var ffilter = new Filter <ESDocument>(); foreach (var f in criteria.CurrentFilters) { if (!f.Key.Equals(fieldName)) { var q = ElasticQueryHelper.CreateQuery(criteria, f); ffilter.Bool(ff => q); } } foreach (var value in values) { var filter = new FacetFilter <ESDocument>(); filter.Range(r => r.IncludeLower(false).IncludeUpper().From(value.Lower).To(value.Upper)); filter.And(b => ffilter); param.FilterFacets(ff => ff.FacetName(String.Format("{0}-{1}", fieldName, value.Id)).Filter(f => filter)); } }
public override RandomAccessFilter BuildRandomAccessFilter(string value, IDictionary <string, string> prop) { FacetFilter f = new FacetFilter(this, value); AdaptiveFacetFilter af = new AdaptiveFacetFilter( new SimpleFacetHandlerFacetDataCacheBuilder(this.GetFacetData <FacetDataCache>, _name, _indexFieldName), f, new string[] { value }, false); return(af); }
public static FacetFilter AsWebModel(this Data.Facet facet) { var ret = new FacetFilter(); ret.InjectFrom(facet); if (facet.Values.Any()) { ret.Values = facet.Values.Select(x => x.AsWebModel()).ToArray(); } return(ret); }
/// <summary> /// Remove facet documents from the existing index. /// </summary> /// <param name="directoryIndexInfo">The directory infomation where the index files are located.</param> /// <param name="directoryFacetInfo">The directory infomation where the facet files are to be placed.</param> /// <param name="textNames">The array of names for text data.</param> /// <param name="filePaths">The array of full paths (without root 'C:\'. e.g. 'temp/http/index.html') for file documents.</param> public void RemoveMultiFacetDocuments(DirectoryInfo directoryIndexInfo, DirectoryInfo directoryFacetInfo, string[] textNames, string[] filePaths) { Lucene.Net.Index.IndexWriter writer = null; DirectoryTaxonomyWriter facetWriter = null; Lucene.Net.Store.Directory directory = null; Lucene.Net.Store.Directory directoryFacet = null; try { // Create the analyzer. SimpleAnalyzer simpleAnalyzer = new Analyzer.SimpleAnalyzer(); StandardAnalyzer standardAnalyzer = new Analyzer.StandardAnalyzer(simpleAnalyzer); // Create the index writer. directory = FSDirectory.Open(directoryIndexInfo); IndexWriterConfig indexConfig = new IndexWriterConfig(Lucene.Net.Util.LuceneVersion.LUCENE_48, standardAnalyzer); indexConfig.SetOpenMode(IndexWriterConfig.OpenMode_e.APPEND); // Open existing or create new. writer = new IndexWriter(directory, indexConfig); // Create the facet writer. directoryFacet = FSDirectory.Open(directoryFacetInfo); facetWriter = new DirectoryTaxonomyWriter(directoryFacet, IndexWriterConfig.OpenMode_e.APPEND); // Create the delet query. FacetFilter filter = new FacetFilter(); Query[] queries = filter.RemoveDocuments(textNames, filePaths); writer.DeleteDocuments(queries); // Commit the index. writer.Commit(); facetWriter.Commit(); } catch (Exception) { throw; } finally { if (writer != null) { writer.Dispose(); } if (directory != null) { directory.Dispose(); } } }
private static List <FacetFilter> GetOwnershipFacetFilter(SingleBucketAggregate source, IEnumerable <KeyValuePair <string, List <string> > > facetList) { var facetFilters = new List <FacetFilter>(); foreach (var aggregation in source.Aggregations) { var facet = new FacetFilter(); facet.Count = int.Parse((aggregation.Value as SingleBucketAggregate).DocCount.ToString(CultureInfo.InvariantCulture)); facet.Value = aggregation.Key; facet.IsSelected = IsFacetTermExists(facetList, aggregation.Key); facetFilters.Add(facet); } return(facetFilters); }
private static List <FacetFilter> GetListPriceFacetFilter(SingleBucketAggregate source, IEnumerable <KeyValuePair <string, List <string> > > facetList, string key) { var facetFilters = new List <FacetFilter>(); foreach (var aggregation in source.Aggregations) { var priceList = (aggregation.Value).Meta.ToList(); for (int i = 0; i < priceList.Count; i++) { var priceItem = priceList[i]; var facet = new FacetFilter(); //facet.Count = int.Parse(priceItem.DocCount.ToString()); facet.Value = priceItem.Key; facet.IsSelected = IsFacetTermExists(facetList, priceItem.Key); facetFilters.Add(facet); } } return(facetFilters); }
/// <summary> /// Adds the facet queries. /// </summary> /// <param name="param">The param.</param> /// <param name="fieldName">Name of the field.</param> /// <param name="criteria">Search criteria.</param> private void AddFacetQueries(Facets <ESDocument> param, string fieldName, ISearchCriteria criteria) { var ffilter = new BoolFilter <ESDocument>(); foreach (var f in criteria.CurrentFilters) { if (!f.Key.Equals(fieldName)) { var q = ElasticQueryHelper.CreateQuery(criteria, f); ffilter.Must(ff => ff.Bool(bb => q)); } } var facetFilter = new FacetFilter <ESDocument>(); facetFilter.Bool(f => ffilter); param.Terms(t => t.FacetName(fieldName.ToLower()).Field(fieldName.ToLower()).FacetFilter(ff => facetFilter)); }
/// <summary> /// Add documents to the existing index. /// </summary> /// <param name="directoryIndexInfo">The directory infomation where the index files are located.</param> /// <param name="directoryFacetInfo">The directory infomation where the facet files are to be placed.</param> /// <param name="facetData">The complete facet information used to build the index information.</param> public void AddMultiFacetDocuments(DirectoryInfo directoryIndexInfo, DirectoryInfo directoryFacetInfo, FacetData facetData) { Lucene.Net.Index.IndexWriter writer = null; DirectoryTaxonomyWriter facetWriter = null; Lucene.Net.Store.Directory directory = null; Lucene.Net.Store.Directory directoryFacet = null; try { if (facetData != null) { // Create the analyzer. SimpleAnalyzer simpleAnalyzer = new Analyzer.SimpleAnalyzer(); StandardAnalyzer standardAnalyzer = new Analyzer.StandardAnalyzer(simpleAnalyzer); // Create the index writer. directory = FSDirectory.Open(directoryIndexInfo); IndexWriterConfig indexConfig = new IndexWriterConfig(Lucene.Net.Util.LuceneVersion.LUCENE_48, standardAnalyzer); indexConfig.SetOpenMode(IndexWriterConfig.OpenMode_e.APPEND); // Open existing or create new. writer = new IndexWriter(directory, indexConfig); // Create the facet writer. directoryFacet = FSDirectory.Open(directoryFacetInfo); facetWriter = new DirectoryTaxonomyWriter(directoryFacet, IndexWriterConfig.OpenMode_e.APPEND); // Create the facet filter. FacetFilter filter = new FacetFilter(); filter.AddDocuments(writer, facetWriter, facetData); // Commit the index. writer.Commit(); facetWriter.Commit(); } } catch (Exception) { throw; } finally { if (writer != null) { writer.Dispose(); } if (facetWriter != null) { facetWriter.Dispose(); } if (directory != null) { directory.Dispose(); } if (directoryFacet != null) { directoryFacet.Dispose(); } } }
/// <summary> /// Adds the facet queries. /// </summary> /// <param name="param">The param.</param> /// <param name="fieldName">Name of the field.</param> /// <param name="values">The values.</param> private void AddFacetQueries(Facets<ESDocument> param, string fieldName, IEnumerable<RangeFilterValue> values, ISearchCriteria criteria) { if (values == null) return; var ffilter = new Filter<ESDocument>(); foreach (var f in criteria.CurrentFilters) { if (!f.Key.Equals(fieldName)) { var q = ElasticQueryHelper.CreateQuery(criteria, f); ffilter.Bool(ff => q); } } foreach (var value in values) { var filter = new FacetFilter<ESDocument>(); filter.Range(r => r.IncludeLower(false).IncludeUpper().From(value.Lower).To(value.Upper)); filter.And(b => ffilter); param.FilterFacets(ff => ff.FacetName(String.Format("{0}-{1}", fieldName, value.Id)).Filter(f => filter)); } }
/// <summary> /// Adds the facet queries. /// </summary> /// <param name="param">The param.</param> /// <param name="fieldName">Name of the field.</param> /// <param name="values">The values.</param> private void AddFacetQueries( Facets<ESDocument> param, string fieldName, IEnumerable<AttributeFilterValue> values, ISearchCriteria criteria) { if (values == null) return; var ffilter = new BoolFilter<ESDocument>(); foreach (var f in criteria.CurrentFilters) { if (!f.Key.Equals(fieldName)) { var q = ElasticQueryHelper.CreateQuery(criteria, f); ffilter.Must(ff => ff.Bool(bb=>q)); } } var facetFilter = new FacetFilter<ESDocument>(); facetFilter.Bool(f => ffilter); //var filter = new FacetFilter<ESDocument>(); //facetFilter.Terms(x => x.Values(values.Select(y => y.Value).ToArray())); //var filterFacet = new FilterFacet<ESDocument>(); //filterFacet.FacetName(fieldName.ToLower()).FacetFilter(f => facetFilter); param.Terms(t => t.FacetName(fieldName.ToLower()).Field(fieldName.ToLower()).FacetFilter(ff => facetFilter)); }
/// <summary> /// Adds the facet queries. /// </summary> /// <param name="param">The param.</param> /// <param name="fieldName">Name of the field.</param> /// <param name="values">The values.</param> private void AddFacetQueries(Facets<ESDocument> param, string fieldName, IEnumerable<RangeFilterValue> values) { if (values == null) return; foreach (var value in values) { var filter = new FacetFilter<ESDocument>(); filter.Range(r => r.IncludeLower(false).IncludeUpper().From(value.Lower).To(value.Upper)); param.FilterFacets(ff => ff.FacetName(String.Format("{0}-{1}", fieldName, value.Id)).Filter(f => filter)); } }
/// <summary> /// Adds the facet queries. /// </summary> /// <param name="param">The param.</param> /// <param name="fieldName">Name of the field.</param> /// <param name="criteria">Search criteria.</param> private void AddFacetQueries(Facets<ESDocument> param, string fieldName, ISearchCriteria criteria) { var ffilter = new BoolFilter<ESDocument>(); foreach (var f in criteria.CurrentFilters) { if (!f.Key.Equals(fieldName)) { var q = ElasticQueryHelper.CreateQuery(criteria, f); ffilter.Must(ff => ff.Bool(bb => q)); } } var facetFilter = new FacetFilter<ESDocument>(); facetFilter.Bool(f => ffilter); param.Terms(t => t.FacetName(fieldName.ToLower()).Field(fieldName.ToLower()).FacetFilter(ff => facetFilter)); }