public override void TestSetup() { _luceneDir = new RAMDirectory(); _indexer = IndexInitializer.GetUmbracoIndexer(_luceneDir); _indexer.RebuildIndex(); _searcher = IndexInitializer.GetUmbracoSearcher(_luceneDir); }
protected SearchSubsystem( Control parent, RichTextBox findEditor, Panel panelSearchIcon, ListBox listBoxSuggest, LuceneSearcher <TId, TObj> searcher, IDocumentAdapter <TId, TObj> adapter, params LayoutViewControl[] layoutViews) { _parent = parent; _findEditor = findEditor; _panelSearchIcon = panelSearchIcon; _listBoxSuggest = listBoxSuggest; Searcher = searcher; _adapter = adapter; _views = layoutViews; _listBoxSuggest.Visible = false; _listBoxSuggest.Height = 0; _highlighter = new SearchStringHighlighter(_findEditor); _highlighter.Highlight(); }
//NOTE: If we moved this logic inside of the 'Skip' method like it used to be then we get the Code Analysis barking // at us because of Linq requirements and 'MoveNext()'. This method is to work around this behavior. protected override ISearchResult GetSearchResult(int index) { // I have seen IndexOutOfRangeException here which is strange as this is only called in one place // and from that one place "i" is always less than the size of this collection. // but we'll error check here anyways if (TopDocs?.ScoreDocs.Length < index) { return(null); } var scoreDoc = TopDocs.ScoreDocs[index]; var docId = scoreDoc.Doc; Document doc; if (FieldSelector != null) { doc = LuceneSearcher.Doc(docId, FieldSelector); } else { doc = LuceneSearcher.Doc(docId); } var score = scoreDoc.Score; var result = CreateSearchResult(doc, score); return(result); }
public SearchControl() { InitializeComponent(); //SearchHandler.SearchController.SetSubjects(); setElementAtTreeView(); searcher = MainForm.luceneLoad; }
public void Language_IncludesLanguageRoot() { var sv = CreateOneItem <PersistableItem2>(2, "Svenska", root); sv.LanguageCode = "sv"; indexer.Update(sv); var en = CreateOneItem <PersistableItem2>(3, "Engelska", root); en.LanguageCode = "en"; indexer.Update(en); var svitem = CreateOneItem <PersistableItem1>(4, "Hello världen", sv); indexer.Update(svitem); var enitem = CreateOneItem <PersistableItem1>(5, "Hello world", en); indexer.Update(enitem); var searcher = new LuceneSearcher(accessor, persister); var result = searcher.Search(Query.For("").Language(sv)); Assert.That(result.Hits.Count(), Is.EqualTo(2)); Assert.That(result.Contains(sv)); }
public void TestSetup() { _luceneDir = new RandomIdRAMDirectory(); _indexer = IndexInitializer.GetSimpleIndexer(_luceneDir); _indexer.RebuildIndex(); _searcher = IndexInitializer.GetLuceneSearcher(_luceneDir); }
public void NonDetail_IndexableOnlyGetterProperty_IsIndexed() { indexer.Update(root); var searcher = new LuceneSearcher(accessor, persister); var result = searcher.Search(Query.For("ipsum")); Assert.That(result.Hits.Single().Content, Is.EqualTo(root)); }
private SearchResult CreateFromDocumentItem(int i) { var docId = _topDocs.ScoreDocs[i].doc; var doc = LuceneSearcher.Doc(docId); var score = _topDocs.ScoreDocs[i].score; var result = CreateSearchResult(doc, score); return(result); }
private SearchResult CreateFromDocumentItem(int i) { var docId = _collector.GetDocId(i); var doc = LuceneSearcher.Doc(docId); var score = _collector.GetDocScore(i); var result = CreateSearchResult(doc, score); return(result); }
private System.Collections.Generic.List <ContentItem> Search(string field, bool descending) { var searcher = new LuceneSearcher(accessor, persister); var query = Query.For <PersistableItem1>().OrderBy(field, descending); var hits = searcher.Search(query).Hits.Select(h => h.Content).ToList(); return(hits); }
public void NonDetail_IndexableProperty_IsIndexed() { root.NonDetailProperty = "Lorem dolor"; indexer.Update(root); var searcher = new LuceneSearcher(accessor, persister); var result = searcher.Search(Query.For("dolor")); Assert.That(result.Hits.Single().Content, Is.EqualTo(root)); }
public void NonIndexableClass_IsNotIndexed() { var child = CreateOneItem <PersistableItem1b>(2, "child", root); indexer.Update(child); var searcher = new LuceneSearcher(accessor, persister); var result = searcher.Search(Query.For("child")); Assert.That(result.Hits.Any(), Is.False); }
private System.Collections.Generic.List <ContentItem> Search(params SortFieldData[] sortFields) { var searcher = new LuceneSearcher(accessor, persister); var query = Query.For <PersistableItem1>(); Array.ForEach(sortFields, sortField => query.OrderBy(sortField.SortField, sortField.SortDescending)); var hits = searcher.Search(query).Hits.Select(h => h.Content).ToList(); return(hits); }
public void Take() { indexer.Update(CreateOneItem <PersistableItem1>(3, "Hello country", root)); indexer.Update(CreateOneItem <PersistableItem1>(2, "Hello world", root)); indexer.Update(CreateOneItem <PersistableItem1>(4, "Hello universe", root)); var searcher = new LuceneSearcher(accessor, persister); var hits1 = searcher.Search(Query.For("hello").Take(1)); Assert.That(hits1.Count, Is.EqualTo(1)); }
public void Title() { var item = CreateOneItem <PersistableItem1>(2, "Hello world", root); indexer.Update(item); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello")); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); }
public void Total_IsNumberOfItemsInIndex() { indexer.Update(CreateOneItem <PersistableItem1>(3, "Hello country", root)); indexer.Update(CreateOneItem <PersistableItem1>(2, "Hello world", root)); indexer.Update(CreateOneItem <PersistableItem1>(4, "Hello universe", root)); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello").Take(2)); Assert.That(hits.Total, Is.EqualTo(3)); }
public void UnSecuredPages_AreDisplayed_WhenSearching_WithRoles() { var item = CreateOneItem <PersistableItem1>(2, "Hello world", root); indexer.Update(item); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello").ReadableBy("Members")); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); }
public void IndexableProperty() { var item = CreateOneItem <PersistableItem1>(2, "Hello world", root); item.StringProperty = "Hej Världen"; indexer.Update(item); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("världen")); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); }
public void EditableProperty() { var item = CreateOneItem <Definitions.PersistableItem1>(2, "Hello world", root); item.IntProperty = 444; indexer.Update(item); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("444")); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); }
public void DeletedItems_DoesntShowUp_InSearch() { var item = CreateOneItem <PersistableItem1>(2, "Hello world", root); indexer.Update(item); indexer.Delete(item.ID); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello")); Assert.That(hits.Hits.Count(), Is.EqualTo(0)); }
public void AuthorizedPages_AreDisplayed_WhenSearching_WithoutSpecifyingRoles() { var item = CreateOneItem <PersistableItem1>(2, "Hello world", root); item.AuthorizedRoles.Add(new N2.Security.AuthorizedRole(item, "Members")); indexer.Update(item); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello")); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); }
public void QueryByExpression_ForVisibleProperty() { indexer.Update(root); var searcher = new LuceneSearcher(accessor, persister); var query = Query.For <PersistableItem1>(); query.Contains(pi => pi.Visible, "true"); var result = searcher.Search(query); Assert.That(result.Hits.Single().Content, Is.EqualTo(root)); }
public ActionResult SearchLucene(FormCollection f, int?page) { int pageNumber = (page ?? 1); int pageSize = 18; var result = LuceneSearcher.Search("All", f["txtSearch1"].ToString()); if (result.Count > 0) { ViewBag.result = "Search Lucene Result"; return(View(result.ToPagedList(pageNumber, pageSize))); } return(RedirectToAction("searchNull")); }
public void QueryByExpression_ForDetail() { root.StringProperty = "This is a very special string"; indexer.Update(root); var searcher = new LuceneSearcher(accessor, persister); var query = Query.For <PersistableItem1>(); query.Contains(pi => pi.StringProperty, "special"); var result = searcher.Search(query); Assert.That(result.Hits.Single().Content, Is.EqualTo(root)); }
private void DoSearch(Query query, IEnumerable <SortField> sortField, int maxResults) { //This try catch is because analyzers strip out stop words and sometimes leave the query //with null values. This simply tries to extract terms, if it fails with a null //reference then its an invalid null query, NotSupporteException occurs when the query is //valid but the type of query can't extract terms. //This IS a work-around, theoretically Lucene itself should check for null query parameters //before throwing exceptions. try { var set = new HashSet <Term>(); query.ExtractTerms(set); } catch (NullReferenceException) { //this means that an analyzer has stipped out stop words and now there are //no words left to search on //it could also mean that potentially a IIndexFieldValueType is throwing a null ref TotalItemCount = 0; return; } catch (NotSupportedException) { //swallow this exception, we should continue if this occurs. } maxResults = maxResults >= 1 ? Math.Min(maxResults, LuceneSearcher.MaxDoc) : LuceneSearcher.MaxDoc; Collector topDocsCollector; var sortFields = sortField as SortField[] ?? sortField.ToArray(); if (sortFields.Length > 0) { topDocsCollector = TopFieldCollector.Create( new Sort(sortFields), maxResults, false, false, false, false); } else { topDocsCollector = TopScoreDocCollector.Create(maxResults, true); } LuceneSearcher.Search(query, topDocsCollector); TopDocs = sortFields.Length > 0 ? ((TopFieldCollector)topDocsCollector).TopDocs() : ((TopScoreDocCollector)topDocsCollector).TopDocs(); TotalItemCount = TopDocs.TotalHits; }
public void Except_Operator() { var page = CreateOneItem <PersistableItem1>(2, "Hello world", root); var part = CreateOneItem <PersistablePart1>(3, "Hello region", root); indexer.Update(page); indexer.Update(part); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello") - Query.For(typeof(IPage))); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); Assert.That(hits.Hits.Select(h => h.Content).Contains(part)); }
public void And() { var page = CreateOneItem <PersistableItem1>(2, "Hello world", root); var page2 = CreateOneItem <PersistableItem1>(3, "Hello region", root); indexer.Update(page); indexer.Update(page2); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello").And(Query.For("world"))); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); Assert.That(hits.Contains(page)); }
public void And_Operator_Multiple() { var page = CreateOneItem <PersistableItem1>(2, "Hello world hunger", root); var page2 = CreateOneItem <PersistableItem1>(3, "Hello world fulfillment", root); indexer.Update(page); indexer.Update(page2); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello") & Query.For("world") & Query.For("hunger")); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); Assert.That(hits.Contains(page)); }
public void FindPage_ByText_OnPart_BelowPage() { var page1 = CreateOneItem <PersistableItem1>(2, "first page", root); var part1 = CreateOneItem <PersistablePart1>(3, "first part", page1); part1.ZoneName = "Zone"; indexer.Update(page1); indexer.Update(part1); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("part").Pages(true)); Assert.That(hits.Hits.Count(), Is.EqualTo(1)); Assert.That(hits.Hits.Select(h => h.Content).Contains(page1)); }
public void PagesCanBeFound_ByObjectType() { var page = CreateOneItem <PersistableItem1>(2, "Hello world", root); var part = CreateOneItem <PersistablePart1>(3, "Hello region", root); indexer.Update(page); indexer.Update(part); var searcher = new LuceneSearcher(accessor, persister); var hits = searcher.Search(Query.For("hello").OfType(typeof(object))); Assert.That(hits.Hits.Count(), Is.EqualTo(2)); Assert.That(hits.Hits.Select(h => h.Content).Contains(part)); Assert.That(hits.Hits.Select(h => h.Content).Contains(page)); }
private void DoSearch(bool explain) { var search = new LuceneSearcher(SessionManager.Instance.CurrentIndex); var infos = new QueryInfo[] { new QueryInfo() { FieldName = txtFieldName1.Text, SearchString = txtSearchWord1.Text, QueryType = LuceneQueryType1.Dropdown.SelectedValue, QueryOccurance = QueryOccurance1.Dropdown.SelectedValue }, new QueryInfo() { FieldName = txtFieldName2.Text, SearchString = txtSearchWord2.Text, QueryType = LuceneQueryType2.Dropdown.SelectedValue, QueryOccurance = QueryOccurance2.Dropdown.SelectedValue }, new QueryInfo() { FieldName = txtFieldName3.Text, SearchString = txtSearchWord3.Text, QueryType = LuceneQueryType3.Dropdown.SelectedValue, QueryOccurance = QueryOccurance3.Dropdown.SelectedValue } }; if (explain) search.Explain = SearchResultGrid.SelectedIndex; SessionManager.Instance.LuceneSearchResult = search.FieldSearch(infos); txtExplanation.Text = explain ? search.Explanation.ToString() : string.Empty; }