public SearchSecurityTrimmer(IndexSearcher searcher, SecurityCheckerDelegate securityChecker, LuceneQuery luceneQuery) { _securityChecker = securityChecker; _searcher = searcher; _query = luceneQuery; _hitDocs = new List <ScoreDoc>(16); }
public SearchSecurityTrimmer(IndexSearcher searcher, SecurityCheckerDelegate securityChecker, LuceneQuery luceneQuery) { _securityChecker = securityChecker; _searcher = searcher; _query = luceneQuery; _hitDocs = new List<ScoreDoc>(16); }
public SearchSecurityTrimmer(SearchSecurityTrimmerContext searchContext) { _securityChecker = searchContext.SecurityChecker; _searcher = searchContext.Searcher; _luceneQuery = searchContext.LuceneQuery; _searchQuery = searchContext.SearchQuery; _hitDocs = new List<ScoreDoc>(16); }
public SearchSecurityTrimmer(SearchSecurityTrimmerContext searchContext) { _securityChecker = searchContext.SecurityChecker; _searcher = searchContext.Searcher; _luceneQuery = searchContext.LuceneQuery; _searchQuery = searchContext.SearchQuery; _hitDocs = new List <ScoreDoc>(16); }
public IEnumerable <LuceneResult> Search( LuceneQuery luceneQuery, out int totalHits, SecurityCheckerDelegate securityChecker = null) { Requires.NotNull("LuceneQuery", luceneQuery); Requires.NotNull("LuceneQuery.Query", luceneQuery.Query); Requires.PropertyNotEqualTo("LuceneQuery", "PageSize", luceneQuery.PageSize, 0); Requires.PropertyNotEqualTo("LuceneQuery", "PageIndex", luceneQuery.PageIndex, 0); //TODO - Explore simple highlighter as it does not give partial words var highlighter = FastHighlighter; var fieldQuery = highlighter.GetFieldQuery(luceneQuery.Query); var maxResults = luceneQuery.PageIndex * luceneQuery.PageSize; var minResults = maxResults - luceneQuery.PageSize + 1; var searcher = GetSearcher(); var topDocs = new SearchSecurityTrimmer(searcher, securityChecker, luceneQuery); searcher.Search(luceneQuery.Query, null, topDocs); totalHits = topDocs.TotalHits; if (Logger.IsDebugEnabled) { var sb = GetSearcResultExplanation(luceneQuery, topDocs.ScoreDocs, searcher); Logger.Debug(sb); } //Page doesn't exist if (totalHits < minResults) { return(new List <LuceneResult>()); } return(topDocs.ScoreDocs.Select(match => new LuceneResult { Document = searcher.Doc(match.Doc), Score = match.Score, DisplayScore = GetDisplayScoreFromMatch(match.ToString()), TitleSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.TitleTag, luceneQuery.TitleSnippetLength), BodySnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.BodyTag, luceneQuery.BodySnippetLength), DescriptionSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.DescriptionTag, luceneQuery.TitleSnippetLength), TagSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.Tag, luceneQuery.TitleSnippetLength), AuthorSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.AuthorNameTag, luceneQuery.TitleSnippetLength), ContentSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.ContentTag, luceneQuery.TitleSnippetLength) }).ToList()); }
public IEnumerable<LuceneResult> Search( LuceneQuery luceneQuery, out int totalHits, SecurityCheckerDelegate securityChecker = null) { Requires.NotNull("LuceneQuery", luceneQuery); Requires.NotNull("LuceneQuery.Query", luceneQuery.Query); Requires.PropertyNotEqualTo("LuceneQuery", "PageSize", luceneQuery.PageSize, 0); Requires.PropertyNotEqualTo("LuceneQuery", "PageIndex", luceneQuery.PageIndex, 0); //TODO - Explore simple highlighter as it does not give partial words var highlighter = FastHighlighter; var fieldQuery = highlighter.GetFieldQuery(luceneQuery.Query); var maxResults = luceneQuery.PageIndex*luceneQuery.PageSize; var minResults = maxResults - luceneQuery.PageSize + 1; var searcher = GetSearcher(); var topDocs = new SearchSecurityTrimmer(searcher, securityChecker, luceneQuery); searcher.Search(luceneQuery.Query, null, topDocs); totalHits = topDocs.TotalHits; if (Logger.IsDebugEnabled) { var sb = GetSearcResultExplanation(luceneQuery, topDocs.ScoreDocs, searcher); Logger.Debug(sb); } //Page doesn't exist if (totalHits < minResults) return new List<LuceneResult>(); return topDocs.ScoreDocs.Select(match => new LuceneResult { Document = searcher.Doc(match.Doc), Score = match.Score, DisplayScore = GetDisplayScoreFromMatch(match.ToString()), TitleSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.TitleTag, luceneQuery.TitleSnippetLength), BodySnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.BodyTag, luceneQuery.BodySnippetLength), DescriptionSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.DescriptionTag, luceneQuery.TitleSnippetLength), TagSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.Tag, luceneQuery.TitleSnippetLength), AuthorSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.AuthorNameTag, luceneQuery.TitleSnippetLength), ContentSnippet = GetHighlightedText(highlighter, fieldQuery, searcher, match, Constants.ContentTag, luceneQuery.TitleSnippetLength) }).ToList(); }