public async Task FilterAsync(ContentOptionsViewModel model, IQuery <ContentItem> query, IUpdateModel updater) { var settings = (await _siteService.GetSiteSettingsAsync()).As <TaxonomyContentsAdminListSettings>(); foreach (var contentItemId in settings.TaxonomyContentItemIds) { var viewModel = new TaxonomyContentsAdminFilterViewModel(); if (await updater.TryUpdateModelAsync(viewModel, "Taxonomy" + contentItemId)) { // Show all items categorized by the taxonomy if (!String.IsNullOrEmpty(viewModel.SelectedContentItemId)) { if (viewModel.SelectedContentItemId.StartsWith("Taxonomy:", StringComparison.OrdinalIgnoreCase)) { viewModel.SelectedContentItemId = viewModel.SelectedContentItemId.Substring(9); query.All( x => query.With <TaxonomyIndex>(x => x.TaxonomyContentItemId == viewModel.SelectedContentItemId) ); } else if (viewModel.SelectedContentItemId.StartsWith("Term:", StringComparison.OrdinalIgnoreCase)) { viewModel.SelectedContentItemId = viewModel.SelectedContentItemId.Substring(5); query.All( x => query.With <TaxonomyIndex>(x => x.TermContentItemId == viewModel.SelectedContentItemId) ); } } } } }
/// <summary> /// Map query terms to posting list locations. /// </summary> private void Map(IQuery query) { if (query == null) { return; } //foreach (var q in query.All()) Parallel.ForEach(query.All(), q => { //foreach (var term in q.Terms) Parallel.ForEach(q.Terms, term => { var columnReader = CreateColumnReader(term.CollectionId, term.KeyId); if (columnReader != null) { using (columnReader) { var hit = columnReader.ClosestMatch(term.Vector, _model); if (hit != null) { term.Score = hit.Score; term.PostingsOffsets = hit.Node.PostingsOffsets; } } } }); }); }
private void Model2SQL <T>(IQuery query, Model2Sql sqlObject) { if (query == null) { } else { sqlObject.SqlType = Model2Db.Query; Dictionary <IQueryValue, QueryLink> dic = query.All(); int cur = 1; foreach (var item in dic) { if (cur != 1) { sqlObject.Sql = sqlObject.Sql + string.Format(" {0} ", item.Value.ToString()); } if (item.Key is QueryValue) { QueryValue2Model2Sql <T>(sqlObject, item); } else if (item.Key is Query) { Query2Model2Sql <T>(sqlObject, item); } else { throw new ArgumentException("未实现指定的IQuery类型"); } cur++; } } }
public void ShouldReadWriteEpochMillisecondsDatTime() { using (IJournal <File> journal = CreateJournal(DateTimeMode.EpochMilliseconds)) { TestUtils.GenerateRecords(journal, 1000, 2, GenerateFile); IQuery <File> r2 = journal.OpenReadTx(); int i = 0; foreach (File file in r2.All()) { Assert.That(file.Path, Is.EqualTo(i.ToString(CultureInfo.InvariantCulture))); DateTime expectedModifedDate = TestUtils.START.AddMilliseconds(i * _timeIncrement); Assert.That(DateUtils.DateTimeToUnixTimeStamp(file.Modified) , Is.EqualTo(DateUtils.DateTimeToUnixTimeStamp(expectedModifedDate))); DateTime?expectedCreatedDate = i % 2 == 0 ? TestUtils.START.AddMilliseconds(i * _timeIncrement * 2) : (DateTime?)null; Assert.That(file.Created, Is.EqualTo(expectedCreatedDate)); i++; } } }
private Model2Sql GetQuerySQL <T>(IQuery query) { if (query == null) { throw new ArgumentException("query不能为空"); } Model2Sql sqlObject = new Model2Sql(); sqlObject.SqlType = Model2Db.Query; Dictionary <IQueryValue, QueryLink> dic = query.All(); if (dic.Count == 0) { throw new ArgumentException("query不包含查询字段"); } int cur = 1; foreach (var item in dic) { if (cur != 1) { sqlObject.Sql = sqlObject.Sql + string.Format(" {0} ", item.Value.ToString()); } if (item.Key is QueryValue) { QueryValue2Model2Sql <T>(sqlObject, item); } else if (item.Key is Query) { Query2Model2Sql <T>(sqlObject, item); } else { throw new ArgumentException("未实现指定的IQuery类型"); } cur++; } return(sqlObject); }
public void ShouldReadWriteNetDateTimes() { using (IJournal <File> journal = CreateJournal(DateTimeMode.DotNetDateTime)) { TestUtils.GenerateRecords(journal, 1000, 2, GenerateFile); IQuery <File> r2 = journal.OpenReadTx(); int i = 0; foreach (File file in r2.All()) { Assert.That(file.Path, Is.EqualTo(i.ToString(CultureInfo.InvariantCulture))); Assert.That(file.Modified, Is.EqualTo(TestUtils.START.AddMilliseconds(i * _timeIncrement))); Assert.That(file.Created, Is.EqualTo( i % 2 == 0 ? TestUtils.START.AddMilliseconds(i * _timeIncrement * 2) : (DateTime?)null)); i++; } } }