private string getEntityName(long datasetid) { XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); return(xmlDatasetHelper.GetEntityName(datasetid)); }
/// <summary> /// /// </summary> /// <remarks></remarks> /// <seealso cref=""/> /// <param name="id"></param> /// <param name="metadataDoc"></param> /// <return></return> private void writeBexisIndex(long id, XmlDocument metadataDoc) { string docId = id.ToString();//metadataDoc.GetElementsByTagName("bgc:id")[0].InnerText; var dataset = new Document(); List <XmlNode> facetNodes = facetXmlNodeList; dataset.Add(new Field("doc_id", docId, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.NOT_ANALYZED)); /// /// Add a field to indicte whether the dataset is public, this will be used for the public datasets' search page. /// dataset.Add(new Field("gen_isPublic", entityPermissionManager.Exists(null, entityTypeId.Value, id) ? "TRUE" : "FALSE", Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.NOT_ANALYZED)); XmlDatasetHelper xmlDatasetHelper = new XmlDatasetHelper(); dataset.Add(new Field("gen_entity_name", xmlDatasetHelper.GetEntityName(id), Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.NOT_ANALYZED)); foreach (XmlNode facet in facetNodes) { String multivalued = facet.Attributes.GetNamedItem("multivalued").Value; string[] metadataElementNames = facet.Attributes.GetNamedItem("metadata_name").Value.Split(','); String lucene_name = facet.Attributes.GetNamedItem("lucene_name").Value; foreach (string metadataElementName in metadataElementNames) { XmlNodeList elemList = metadataDoc.SelectNodes(metadataElementName); if (elemList != null) { for (int i = 0; i < elemList.Count; i++) { string eleme = elemList[i].InnerText; if (!elemList[i].InnerText.Trim().Equals("")) { dataset.Add(new Field("facet_" + lucene_name, elemList[i].InnerText, Lucene.Net.Documents.Field.Store.YES, Field.Index.NOT_ANALYZED)); dataset.Add(new Field("ng_all", elemList[i].InnerText, Lucene.Net.Documents.Field.Store.YES, Field.Index.ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[i].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[i].InnerText); } } } } } List <XmlNode> propertyNodes = propertyXmlNodeList; foreach (XmlNode property in propertyNodes) { String multivalued = property.Attributes.GetNamedItem("multivalued").Value; String lucene_name = property.Attributes.GetNamedItem("lucene_name").Value; string[] metadataElementNames = property.Attributes.GetNamedItem("metadata_name").Value.Split(','); foreach (string metadataElementName in metadataElementNames) { XmlNodeList elemList = metadataDoc.SelectNodes(metadataElementName); if (elemList != null) { String primitiveType = property.Attributes.GetNamedItem("primitive_type").Value; if (elemList[0] != null) { if (primitiveType.ToLower().Equals("string")) { dataset.Add(new Field("property_" + lucene_name, elemList[0].InnerText, Lucene.Net.Documents.Field.Store.YES, Field.Index.NOT_ANALYZED)); dataset.Add(new Field("ng_all", elemList[0].InnerText, Lucene.Net.Documents.Field.Store.YES, Field.Index.ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[0].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[0].InnerText); } else if (primitiveType.ToLower().Equals("date")) { //DateTime MyDateTime = DateTime.Now; DateTime MyDateTime = new DateTime(); /*String dTFormatElementName = property.Attributes.GetNamedItem("date_format").Value; * XmlNodeList dtFormatElements = metadataDoc.GetElementsByTagName(dTFormatElementName); * String dateTimeFormat = dtFormatElements[0].InnerText;*/ if (DateTime.TryParse(elemList[0].InnerText, out MyDateTime)) { //MyDateTime = DateTime.ParseExact(elemList[0].InnerText, dateTimeFormat, // CultureInfo.InvariantCulture); long t = MyDateTime.Ticks; NumericField xyz = new NumericField("property_numeric_" + lucene_name).SetLongValue( MyDateTime.Ticks); String dateToString = MyDateTime.Date.ToString("d", CultureInfo.CreateSpecificCulture("en-US")); dataset.Add(xyz); dataset.Add(new Field("property_" + lucene_name, dateToString, Lucene.Net.Documents.Field.Store.NO, Field.Index.NOT_ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, MyDateTime.Date.ToString()); writeAutoCompleteIndex(docId, "ng_all", MyDateTime.Date.ToString()); } } else if (primitiveType.ToLower().Equals("integer")) { dataset.Add( new NumericField("property_numeric" + lucene_name).SetIntValue( Convert.ToInt32(elemList[0].InnerText))); dataset.Add(new Field("property_" + lucene_name, elemList[0].InnerText, Lucene.Net.Documents.Field.Store.NO, Field.Index.NOT_ANALYZED)); // writeAutoCompleteIndex(lucene_name, elemList[0].InnerText); } else if (primitiveType.ToLower().Equals("double")) { dataset.Add( new NumericField("property_numeric" + lucene_name).SetDoubleValue( Convert.ToDouble(elemList[0].InnerText))); dataset.Add(new Field("property_" + lucene_name, elemList[0].InnerText, Lucene.Net.Documents.Field.Store.NO, Field.Index.NOT_ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[0].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[0].InnerText); } } } } } List <XmlNode> categoryNodes = categoryXmlNodeList; // add categories to index foreach (XmlNode category in categoryNodes) { String primitiveType = category.Attributes.GetNamedItem("primitive_type").Value; String lucene_name = category.Attributes.GetNamedItem("lucene_name").Value; String analysing = category.Attributes.GetNamedItem("analysed").Value; float boosting = Convert.ToSingle(category.Attributes.GetNamedItem("boost").Value); var toAnalyse = Lucene.Net.Documents.Field.Index.NOT_ANALYZED; if (analysing.ToLower().Equals("yes")) { toAnalyse = Lucene.Net.Documents.Field.Index.ANALYZED; } if (!category.Attributes.GetNamedItem("type").Value.Equals("primary_data_field")) { String multivalued = category.Attributes.GetNamedItem("multivalued").Value; String storing = category.Attributes.GetNamedItem("store").Value; var toStore = Lucene.Net.Documents.Field.Store.NO; if (storing.ToLower().Equals("yes")) { toStore = Lucene.Net.Documents.Field.Store.YES; } string[] metadataElementNames = category.Attributes.GetNamedItem("metadata_name").Value.Split(','); foreach (string metadataElementName in metadataElementNames) { XmlNodeList elemList = metadataDoc.SelectNodes(metadataElementName); if (elemList != null) { for (int i = 0; i < elemList.Count; i++) { Field a = new Field("category_" + lucene_name, elemList[i].InnerText, toStore, toAnalyse); a.Boost = boosting; dataset.Add(a); dataset.Add(new Field("ng_" + lucene_name, elemList[i].InnerText, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.ANALYZED)); dataset.Add(new Field("ng_all", elemList[i].InnerText, Lucene.Net.Documents.Field.Store.YES, Lucene.Net.Documents.Field.Index.ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[i].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[i].InnerText); } } } } else { //if the primary data index exist in the config - this means the primary data should be indexed includePrimaryData = true; } } indexPrimaryData(id, categoryNodes, ref dataset, docId, metadataDoc); List <XmlNode> generalNodes = generalXmlNodeList; foreach (XmlNode general in generalNodes) { String multivalued = general.Attributes.GetNamedItem("multivalued").Value; String primitiveType = general.Attributes.GetNamedItem("primitive_type").Value; String lucene_name = general.Attributes.GetNamedItem("lucene_name").Value; String storing = general.Attributes.GetNamedItem("store").Value; String analysing = general.Attributes.GetNamedItem("analysed").Value; var toStore = Lucene.Net.Documents.Field.Store.NO; var toAnalyse = Lucene.Net.Documents.Field.Index.NOT_ANALYZED; if (storing.ToLower().Equals("yes")) { toStore = Lucene.Net.Documents.Field.Store.YES; } if (analysing.ToLower().Equals("yes")) { toAnalyse = Lucene.Net.Documents.Field.Index.ANALYZED; } float boosting = Convert.ToSingle(general.Attributes.GetNamedItem("boost").Value); string[] metadataElementNames = general.Attributes.GetNamedItem("metadata_name").Value.Split(','); foreach (string metadataElementName in metadataElementNames) { XmlNodeList elemList = metadataDoc.SelectNodes(metadataElementName); for (int i = 0; i < elemList.Count; i++) { Field a = new Field(lucene_name, elemList[i].InnerText, toStore, toAnalyse); a.Boost = boosting; dataset.Add(a); dataset.Add(new Field("ng_all", elemList[i].InnerText, Lucene.Net.Documents.Field.Store.NO, Field.Index.ANALYZED)); writeAutoCompleteIndex(docId, lucene_name, elemList[i].InnerText); writeAutoCompleteIndex(docId, "ng_all", elemList[i].InnerText); } } } indexWriter.AddDocument(dataset); }