Exemplo n.º 1
0
 public override void TestSetup()
 {
     _luceneDir = new RAMDirectory();
     _indexer   = IndexInitializer.GetUmbracoIndexer(_luceneDir);
     _indexer.RebuildIndex();
     _searcher = IndexInitializer.GetUmbracoSearcher(_luceneDir);
 }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        //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);
        }
Exemplo n.º 4
0
 public SearchControl()
 {
     InitializeComponent();
     //SearchHandler.SearchController.SetSubjects();
     setElementAtTreeView();
     searcher = MainForm.luceneLoad;
 }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
 public void TestSetup()
 {
     _luceneDir = new RandomIdRAMDirectory();
     _indexer   = IndexInitializer.GetSimpleIndexer(_luceneDir);
     _indexer.RebuildIndex();
     _searcher = IndexInitializer.GetLuceneSearcher(_luceneDir);
 }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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));
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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));
        }
Exemplo n.º 15
0
        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));
        }
Exemplo n.º 16
0
        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));
        }
Exemplo n.º 17
0
        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));
        }
Exemplo n.º 18
0
        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));
        }
Exemplo n.º 19
0
        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));
        }
Exemplo n.º 20
0
        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));
        }
Exemplo n.º 21
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));
        }
Exemplo n.º 22
0
        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));
        }
Exemplo n.º 23
0
        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"));
        }
Exemplo n.º 24
0
        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));
        }
Exemplo n.º 25
0
        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;
        }
Exemplo n.º 26
0
        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));
        }
Exemplo n.º 27
0
        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));
        }
Exemplo n.º 28
0
        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));
        }
Exemplo n.º 29
0
        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));
        }
Exemplo n.º 30
0
        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));
        }
Exemplo n.º 31
0
        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;
        }