Press Ctrl / CMD + C to copy this to your clipboard.
This post will be reported to the moderators as potential spam to be looked at
I have 3 indexers: content from Umbraco contents, other two from external source (I use some repositories and services)
I created component for search in order to register creators and indexer
public sealed class SearchComponent : IComponent { private readonly IExamineManager mExamineManager; private readonly SystemsIndexCreator mSystemsIndexCreator; private readonly ApiDocumentationIndexCreator mApiDocumentationIndexCreator; public SearchComponent(IExamineManager examineManager, SystemsIndexCreator SystemsIndexCreator, ApiDocumentationIndexCreator apiDocumentationIndexCreator) { mExamineManager = examineManager; mSystemsIndexCreator = SystemsIndexCreator; mApiDocumentationIndexCreator = apiDocumentationIndexCreator; } public void Initialize() { foreach (var index in mSystemsIndexCreator.Create()) mExamineManager.AddIndex(index); foreach (var index in mApiDocumentationIndexCreator.Create()) mExamineManager.AddIndex(index); }
The items are populated correctly, as I see data in TEMP\ExamineManager... locations
for example for api documentation set builder class I do:
public class ApiDocumentationValuesSetBuilder : IValueSetBuilder<SiteMapItem> { public IEnumerable<ValueSet> GetValueSets(params MyData[] myDataItems) { var list = new List<ValueSet>(); if (myDataItems != null) { foreach (var sitemap in myDataItems) { var fp = !string.IsNullOrWhiteSpace(sitemap.Path) ? HostingEnvironment.MapPath(ApiDocumentationService.cDocumentationFolder + sitemap.Path) : ""; var indexValues = new Dictionary<string, object> { ["name"] = sitemap.Name, ["path"] = sitemap.Path, ["version"] = sitemap.Version ?? "", ["content"] = File.Exists(fp) ? File.ReadAllText(fp) : "", ["dircount"] = (sitemap.Directories?.Count ?? 0).ToString(), }; list.Add(new ValueSet(Guid.NewGuid().ToString(), "apidocumentation", indexValues)); } } return list; } }
All good here.
I have a SearchEngine class:
SearchEngine
public class SearchEngine { private static readonly int cPerPage = 10; public SearchEngine(string term, string orderBy = null, int maxResults = 20) { Term = term; OrderBy = orderBy; MaxResults = maxResults; } public string Term { get; } public string OrderBy { get; } public int MaxResults { get; } public SearchResultModel SearchAll(IExamineManager examineManager, int page = 0) { var itemsFound = new List<SearchResultModel> { Search(examineManager, "ExternalIndex"), Search(examineManager, ApiDocumentationIndexRebuilder.cIndexerName, "apidocumentation"), Search(examineManager, SystemsIndexRebuilder.cIndexerName, "systems") }; itemsFound.RemoveAll(c => c == null); var finalItems = itemsFound.Skip(page * cPerPage); return new SearchResultModel(finalItems.SelectMany(s => s.SearchResults), finalItems.Sum(s => s.Totalmilliseconds), Term, OrderBy ?? "score"); } private SearchResultModel Search(IExamineManager examineManager, string indexerName, string category = null) { examineManager.TryGetIndex(indexerName, out IIndex index); if (index == null) { return new SearchResultModel(new EmptySearchResults(), 0, "", ""); } var watch = new Stopwatch(); watch.Start(); var searcher = (BaseLuceneSearcher)index.GetSearcher(); var criteria = searcher.CreateQuery(category, BooleanOperation.Or); // I put all fields (some are from Umbraco data, others for outside source) string searchFields = "nodeName,pageTitle,metaDescription,bodyText,name,content"; IBooleanOperation terms = criteria.GroupedOr(searchFields.Split(','), Term); var result = terms.Execute(MaxResults); watch.Stop(); return new SearchResultModel(result, watch.ElapsedMilliseconds, Term, OrderBy ?? "score"); } }
The problem is that term is not found nowhere since I had a lot of content that contains such keyword.
term
What I'm doing wrong here ?
is working on a reply...
Write your reply to:
Upload image
Image will be uploaded when post is submitted
Umbraco searching in multi indexer returns no result
I have 3 indexers: content from Umbraco contents, other two from external source (I use some repositories and services)
I created component for search in order to register creators and indexer
The items are populated correctly, as I see data in TEMP\ExamineManager... locations
for example for api documentation set builder class I do:
All good here.
I have a
SearchEngine
class:The problem is that
term
is not found nowhere since I had a lot of content that contains such keyword.What I'm doing wrong here ?
is working on a reply...