コード例 #1
0
ファイル: UnitTest1.cs プロジェクト: benmcevoy/Rss
        public void Searcher_When_SearcherWarmedUp_SearchIsFaster()
        {
            // Arrange
            var stopwatch = new Stopwatch();
            var indexsource = new FeedsDbContextIndexSource(new FeedsDbEntities(), 100);
            var searcher = new Searcher<Document>(indexsource);

            // Act
            stopwatch.Start();
            var results = searcher.Search("net").ToList();
            stopwatch.Stop();

            var elapsed = stopwatch.ElapsedMilliseconds;
            stopwatch.Reset();

            Debug.WriteLine(elapsed);

            stopwatch.Start();
            results = searcher.Search("net").ToList();
            stopwatch.Stop();

            var elapsed2 = stopwatch.ElapsedMilliseconds;

            Debug.WriteLine(elapsed2);

            // Assert
            Assert.IsTrue(elapsed2 < elapsed);
        }
コード例 #2
0
ファイル: SearcherTests.cs プロジェクト: clarkcb/xsearch
 public void TestFilterFile_IsHidden_False()
 {
     var settings = GetSettings();
     var searcher = new Searcher(settings);
     var file = new FileInfo(".gitignore");
     Assert.False(searcher.FilterFile(file));
 }
コード例 #3
0
ファイル: SearcherTests.cs プロジェクト: clarkcb/xsearch
 public void TestFilterFile_ArchiveNoSearchArchives_False()
 {
     var settings = GetSettings();
     var searcher = new Searcher(settings);
     var file = new FileInfo("archive.zip");
     Assert.False(searcher.FilterFile(file));
 }
コード例 #4
0
        private void SearchIndex()
        {
            if (this._searchterm.Length > 0)
            {
                try
                {
                    Searcher sr = new Searcher(this._indexConfigNodes[0]);
                    sr.search(this._searchterm, 0);
                    if (sr.ResultTable.Rows.Count > 0)
                    {
                        this.ResultList = new List<SearchResult>(sr.ResultTable.Rows.Count);
                        for (int i = 0; i < sr.ResultTable.Rows.Count; i++)
                        {
                            SearchResult result = new SearchResult(sr.ResultTable.Rows[i][0].ToString(), sr.ResultTable.Rows[i][1].ToString(), sr.ResultTable.Rows[i][2].ToString());

                            try
                            {
                                DateTime dateStr = DateTime.Parse(sr.ResultTable.Rows[i][0].ToString());

                                result.SortField = dateStr.Date.Year.ToString().Substring(2) + dateStr.Month.ToString("d2") + dateStr.Day.ToString("d2");
                            }
                            catch
                            {
                                result.SortField = result.Title;
                            }
                            this.ResultList.Add(result);
                        }
                        this.ResultList = ResultList.OrderBy(o => o.SortField).ToList();
                    }
                }
                catch { }
            }
        }
コード例 #5
0
 void decoder_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
 {
     if (++x < 4) return;
     SearchButton.IsEnabled = true;
     d = new Dictionary("cedict_ts.u8");
     s = new Searcher(d, new Index("english.csv"), new Index("pinyin.csv"), new Index("hanzi.csv"));
 }
コード例 #6
0
ファイル: Form1.cs プロジェクト: usmanghani/Misc
        private void button2_Click(object sender, EventArgs e)
        {
            string path = Application.StartupPath + "\\empty.html";
            if (!System.IO.File.Exists(path))
            {
                System.IO.File.Create(path);

            }

            webBrowser1.Url = new Uri("file:///" + path);
            listBox1.Items.Clear();
            label1.Text = "Searching...";

            if (isearcher == null) isearcher = new Searcher(_indexTarget);

            if (isearcher == null)
            {
                MessageBox.Show("===> Can't create searcher!");
                return;
            }

            results = isearcher.FastSearch(textBox2.Text);

            label1.Text = results.Length.ToString() + " hit(s).";

            foreach (SearchResult result in results)
            {
                listBox1.Items.Add(result.GetDocProperty("pid") + ", " + result.GetDocProperty("sid") + ", " + result.GetDocProperty("ayatno"));

            }
        }
コード例 #7
0
			public static int Main(string[] args)
			{
				// Is Beagle up?
				DaemonInformationRequest infoReq = new DaemonInformationRequest();
				try {
					infoReq.Send();
				} catch {
					Console.Error.WriteLine("Error: beagled does not appear to be running");
					return -1;
				}

				Bus bus = Bus.Session;
				ObjectPath opath = new ObjectPath("/org/freedesktop/xesam/searcher/main");
				string service = "org.freedesktop.xesam.searcher";
				Searcher search = new Searcher();

				bus.Register(service, opath, search);
				RequestNameReply nameReply = bus.RequestName(service);

				System.Threading.Thread t = new System.Threading.Thread(BusIterate);
				t.Start();

				MainLoop ml = new MainLoop();
				ml.Run();

				return 0;
			}
コード例 #8
0
        public void LogErrorToJsonInputAsync()
        {
            var textInput = "e6d64ac2-c8e9-45e0-ac73-3298ff8cb96f";
            LogglyConfiguration.Configure(c => c.AuthenticateWith("csharptests", "Passw0rd!"));

            var logger = new Logger(textInput);
            var randomString = GenerateRandomString(8);
            logger.LogError(randomString, new InvalidOperationException("oops" + randomString + " something went wrong"));

            var signal = new AutoResetEvent(false);
            SearchJsonResponse response = null;

            new Thread(() =>
            {
                var running = true;
                while (running)
                {
                    Thread.Sleep(3000);
                    response = new Searcher("csharptests").SearchJson("exception", "oops" + randomString);

                    if (response.TotalRecords > 0)
                        running = false;
                }

                signal.Set();
            }).Start();

            signal.WaitOne(50 * 1000); // wait till loggly index the new event (if it didn't after 50 seconds it is broken)

            Assert.IsNotNull(response);
            Assert.AreEqual(1, response.TotalRecords);
            Assert.AreEqual(randomString, response.Results[0].Json["message"]);
            Assert.AreEqual("error", response.Results[0].Json["category"]);
            Assert.AreEqual("System.InvalidOperationException: oops" + randomString + " something went wrong", response.Results[0].Json["exception"]);
        }
コード例 #9
0
ファイル: SearchColumn.cs プロジェクト: pmsun-bruce/DBTool
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="searcher">该字段所在的查询对象</param>
 /// <param name="columnName">字段名称</param>
 public SearchColumn(Searcher searcher, string columnName)
 {
     this.sortOrder = SortOrder.None;
     this.sortIndex = 1;
     this.columnName = columnName;
     this.currentSearcher = searcher;
 }
コード例 #10
0
 static void ShowWindow()
 {
     Searcher searcher = new Searcher();
     searcher.search(Application.dataPath);
     //searcher.search("D:/uniworlds/svn/Caravan/project/caravan/Assets/Resources/models/enviroment/");
     searcher.printResult();
 }
コード例 #11
0
ファイル: Medidas.cs プロジェクト: mgtmc/MineracaoProj1
 public Medidas(TopDocs hits, Searcher searcher, List<int> docs)
 {
     this.qtdDocsRelevantesRetornados = DocsRelevantesRecuperados(hits, searcher, docs);
     this.precisao = _Precisao(hits.ScoreDocs.Length);
     this.cobetura = _Cobertura(docs.Count);
     this.fmeasure = _FMeasure();
 }
コード例 #12
0
        public void StartSearch(INavigateToCallback callback, string searchValue)
        {
            this.StopSearch();

            if (string.IsNullOrWhiteSpace(searchValue))
            {
                callback.Done();
                return;
            }

            var optionsService = _optionsServices.Length > 0
                ? VersionSelector.SelectHighest(_optionsServices)
                : null;
            var searchCurrentDocument = optionsService?.GetSearchCurrentDocument(callback.Options) ?? false;
            var searcher = new Searcher(
                _workspace.CurrentSolution,
                _asyncListener,
                _displayFactory,
                callback,
                searchValue,
                searchCurrentDocument,
                _cancellationTokenSource.Token);

            searcher.Search();
        }
コード例 #13
0
ファイル: UnitTest1.cs プロジェクト: AlexNav73/EPAM_ASP.NET
 public void Test_ArrayDontContainsItem()
 {
     Searcher<int> s = new Searcher<int>(new int[] {6, 2, 4, 1, 8, 3});
     Func<int, int, int> comparator = (x, y) => x.CompareTo(y);
     Assert.IsTrue(s.Search(0, 6, 9, comparator) == -1);
     Assert.IsTrue(s.Search(0, 6, 10, comparator) == -1);
 }
コード例 #14
0
ファイル: SearcherTests.cs プロジェクト: clarkcb/xsearch
 public void TestFilterFile_ArchiveSearchArchives_True()
 {
     var settings = GetSettings();
     settings.SearchArchives = true;
     var searcher = new Searcher(settings);
     var file = new FileInfo("archive.zip");
     Assert.True(searcher.FilterFile(file));
 }
コード例 #15
0
ファイル: SearcherTests.cs プロジェクト: clarkcb/xsearch
 public void TestFilterFile_ArchiveFileArchivesOnly_True()
 {
     var settings = GetSettings();
     settings.ArchivesOnly = true;
     var searcher = new Searcher(settings);
     var file = new FileInfo("archive.zip");
     Assert.False(searcher.FilterFile(file));
 }
コード例 #16
0
ファイル: SearcherTests.cs プロジェクト: clarkcb/xsearch
 public void TestFilterFile_IsHiddenIncludeHidden_True()
 {
     var settings = GetSettings();
     settings.ExcludeHidden = false;
     var searcher = new Searcher(settings);
     var file = new FileInfo(".gitignore");
     Assert.True(searcher.FilterFile(file));
 }
コード例 #17
0
 /// <summary>
 ///     Initializes a new instance of the <see cref="SearchResults" /> class.
 /// </summary>
 /// <param name="searcher">The searcher.</param>
 /// <param name="reader">The reader.</param>
 /// <param name="docs">The hits.</param>
 /// <param name="criteria">The criteria.</param>
 /// <param name="query">The query.</param>
 public LuceneSearchResults(
     Searcher searcher, IndexReader reader, TopDocs docs, ISearchCriteria criteria, Query query)
 {
     Results = new SearchResults(criteria, null);
     CreateDocuments(searcher, docs);
     CreateFacets(reader, query);
     CreateSuggestions(reader, criteria);
 }
コード例 #18
0
ファイル: SearcherTests.cs プロジェクト: clarkcb/xsearch
 public void TestFilterFile_IsArchiveSearchFile_True()
 {
     var settings = GetSettings();
     settings.SearchArchives = true;
     settings.AddInArchiveExtension("zip");
     var searcher = new Searcher(settings);
     var file = new FileInfo("archive.zip");
     Assert.True(searcher.FilterFile(file));
 }
コード例 #19
0
ファイル: Program.cs プロジェクト: slmtik/IT-Step
 public static int Search(object[] ar, object key, Searcher s)
 {
     for (int i = 0; i < ar.Length; i++)
     {
         if (s(ar[i], key))
             return i;
     }
     return -1;
 }
コード例 #20
0
ファイル: Index.cs プロジェクト: mrkurt/mubble-old
        /// <summary>
        /// Opens or creates an index at the specified location
        /// </summary>
        /// <param name="path">The index path</param>
        private Index(string path)
        {
            this.path = path;
            Utility.EnsureIndex(this.path);

            this.searcher = new Searcher(this);
            this.writer = new Writer(this);
            this.writer.Changed += FireChanged;
            this.schemaManager = new SchemaManager(this);
        }
コード例 #21
0
	void Start() {

		rb = GetComponent<Rigidbody2D> ();
		rb.freezeRotation = true;
		isFacingRight = true;
		myScale = transform.localScale;
		searchScript = gameObject.GetComponent<Searcher> ();


	}
コード例 #22
0
        public MainWindow()
        { // init the controller before the gui statrs
            int cache_size = 100 * 1000;
            int heap_size = 50;
            ctrl = new Controller(cache_size, heap_size);
            
            InitializeComponent();
            srch = new Searcher();

        }
コード例 #23
0
ファイル: SpanWeight.cs プロジェクト: mindis/Transformalize
		public SpanWeight(SpanQuery query, Searcher searcher)
		{
			this.similarity = query.GetSimilarity(searcher);
			this.internalQuery = query;

		    terms = Lucene.Net.Support.Compatibility.SetFactory.CreateHashSet<Term>();
			query.ExtractTerms(terms);

			idfExp = similarity.IdfExplain(terms, searcher);
			idf = idfExp.Idf;
		}
コード例 #24
0
    public string GetHighlight(string value, string highlightField, Searcher searcher, string luceneRawQuery)
    {
        var query = GetQueryParser(highlightField).Parse(luceneRawQuery);
        var scorer = new QueryScorer(searcher.Rewrite(query));

        var highlighter = new Highlighter(HighlightFormatter, scorer);

        var tokenStream = HighlightAnalyzer.TokenStream(highlightField, new StringReader(value));
        string bestFragments = highlighter.GetBestFragments(tokenStream, value, MaxNumHighlights, Separator);
        return bestFragments;
    }
コード例 #25
0
ファイル: SearchTimer.cs プロジェクト: bbriggs/FieldWorks
		/// <summary>
		/// Creates a SearchTimer.
		/// </summary>
		/// <param name="owningControl">This control's cursor will be changed to WaitCursor while searching.</param>
		/// <param name="interval">Number of milliseconds to pause after user input before starting a search.</param>
		/// <param name="searcher">The delegate that will do the searching.</param>
		public SearchTimer(Control owningControl, int interval, Searcher searcher)
		{
			if (owningControl == null)
				throw new ArgumentNullException("owningControl");
			if (searcher == null)
				throw new ArgumentNullException("searcher");

			m_timer = new Timer();
			m_owningControl = owningControl;
			m_interval = interval;
			m_searcher = searcher;
		}
コード例 #26
0
ファイル: SearcherTest.cs プロジェクト: xyandro/NeoEdit
		public void SearcherStringTest()
		{
			var testData = searchText;
			var findStrs = findStrings;
			var caseSearcher = new Searcher(findStrs, true);
			var ignoreCaseSearcher = new Searcher(findStrs);
			Assert.AreEqual(caseSearcher.MaxLen, 3);
			Assert.AreEqual(ignoreCaseSearcher.MaxLen, 3);
			var caseResults = caseSearcher.Find(testData);
			var ignoreCaseResults = ignoreCaseSearcher.Find(testData);
			VerifyResults(caseResults, ignoreCaseResults);
		}
コード例 #27
0
ファイル: SearcherTest.cs プロジェクト: xyandro/NeoEdit
		public void SearcherCharArrayTest()
		{
			var testData = searchText.ToCharArray();
			var findStrs = findStrings.Select(str => str.ToCharArray()).ToList();
			var caseSearcher = new Searcher(findStrs, true);
			var ignoreCaseSearcher = new Searcher(findStrs);
			Assert.AreEqual(caseSearcher.MaxLen, 3);
			Assert.AreEqual(ignoreCaseSearcher.MaxLen, 3);
			var caseResults = caseSearcher.Find(testData);
			var ignoreCaseResults = ignoreCaseSearcher.Find(testData);
			VerifyResults(caseResults, ignoreCaseResults);
		}
コード例 #28
0
ファイル: SearcherTest.cs プロジェクト: xyandro/NeoEdit
		public void SearcherByteTest()
		{
			var testData = Encoding.UTF8.GetBytes(searchText);
			var findStrs = findStrings.Select(str => Encoding.UTF8.GetBytes(str)).ToList();
			var caseSearcher = new Searcher(findStrs, true);
			var ignoreCaseSearcher = new Searcher(findStrs);
			Assert.AreEqual(caseSearcher.MaxLen, 3);
			Assert.AreEqual(ignoreCaseSearcher.MaxLen, 3);
			var caseResults = caseSearcher.Find(testData);
			var ignoreCaseResults = ignoreCaseSearcher.Find(testData);
			VerifyResults(caseResults, ignoreCaseResults);
		}
コード例 #29
0
ファイル: UnitTest1.cs プロジェクト: benmcevoy/Rss
        public void Searcher_When_Searched_ReturnsDocuments()
        {
            // Arrange
            var indexsource = new FeedsDbContextIndexSource(new FeedsDbEntities(), 100);
            var searcher = new Searcher<Document>(indexsource);

            // Act
            var results = searcher.Search("net").ToList();

            // Assert
            Assert.IsTrue(results.Any());
        }
コード例 #30
0
ファイル: SearchTests.cs プロジェクト: queueit/loggly-csharp
        public void GetsTheResponse()
        {
            string responseJson =
                "{\"rsid\": {\"status\": \"SCHEDULED\",\"date_from\": 1379706043000,\"elapsed_time\": 0.017975807189941406,\"date_to\": 1380570043000, \"id\": \"1910175565\"} }";

            Server.Stub(new ApiExpectation { Response = responseJson });
            var r = new Searcher("mogade").Search("anything");
            Assert.IsNotNull(r);
            Assert.IsNotNull(r.RSID);
            Assert.AreEqual("SCHEDULED", r.RSID.Status);
            Assert.AreEqual(1379706043000, r.RSID.From);
            Assert.AreEqual(0.017975807189941406, r.RSID.ElapsedTime);
            Assert.AreEqual(1380570043000, r.RSID.To);
            Assert.AreEqual("1910175565", r.RSID.Id);
        }
コード例 #31
0
        void AddDropdownCallbackDelegate(Rect buttonRect, ReorderableList list)
        {
            var databases = new[]
            {
                TypeSearcherDatabase.GetBuildStepsDatabase(
                    new HashSet <Type>(BuildStep.GetAvailableTypes(type => !IsShown(type))), GetDisplayName),
            };

            var searcher = new Searcher(
                databases,
                new AddTypeSearcherAdapter("Add Build Step"));

            var editorWindow = EditorWindow.focusedWindow;

            SearcherWindow.Show(
                editorWindow,
                searcher,
                AddStep,
                buttonRect.min + Vector2.up * 35.0f,
                a => { },
                new SearcherWindow.Alignment(SearcherWindow.Alignment.Vertical.Top,
                                             SearcherWindow.Alignment.Horizontal.Left)
                );
        }
コード例 #32
0
        public ActionResult Search(string de, string a, int?count, string key)
        {
            Response.AppendHeader("Access-Control-Allow-Origin", "*");
            try
            {
                var error = DataHandler.ChargeServiceCall("/Service/Search", key, Request.UserHostAddress, de + "|" + a + "|" + count);

                if (error == null)
                {
                    int c = count ?? 1;
                    if (c > 5)
                    {
                        c = 5;
                    }
                    if (c < 1)
                    {
                        c = 1;
                    }

                    SearchResultModel model = new SearchResultModel();

                    Searcher searcher = new Searcher(ViaDFGraph.Instance);

                    SearchPosition spFrom = SearchPosition.CreateSearchPosition(de, null);
                    SearchPosition spTo   = SearchPosition.CreateSearchPosition(a, null);

                    if (spFrom != null && spTo != null)
                    {
                        SearchParams sp = new SearchParams();
                        sp.StartSearch = spFrom;
                        sp.StartSearch.LoadNameFromDB();
                        sp.EndSearch = spTo;
                        sp.EndSearch.LoadNameFromDB();
                        sp.NrOfResults = c;

                        DataHandler.LogSearch(sp, Request.UserHostAddress);

                        List <SearchResult> results = searcher.DoSearch(sp);
                        model.Results = results;
                    }
                    else
                    {
                        model.Results = new List <SearchResult>();
                    }

                    using (var stream = new MemoryStream())
                    {
                        new DataContractJsonSerializer(typeof(SearchResultModel)).WriteObject(stream, model);
                        return(Content(Encoding.UTF8.GetString(stream.ToArray()), "application/json", Encoding.UTF8));
                    }
                }
                else
                {
                    return(Json(new { error = error }, JsonRequestBehavior.AllowGet));
                }
            }
            catch (Exception ex)
            {
                DataHandler.WriteException(ex, Request.UserHostAddress);
                return(Json(new { error = "Internal server error" }, JsonRequestBehavior.AllowGet));
            }
        }
コード例 #33
0
 public string SearchForIndex_CorrectParamsStringIncreasingArr_ExpectedResult(string[] arr, string value)
 {
     return(Searcher.SearchForIndex <string>(arr, value));
 }
コード例 #34
0
        /// <summary>
        /// Creates graph from the given items.
        /// Contains implementation of INSERT(hnsw, q, M, Mmax, efConstruction, mL) algorithm.
        /// Article: Section 4. Algorithm 1.
        /// </summary>
        /// <param name="items">The items to insert.</param>
        /// <param name="generator">The random number generator to distribute nodes across layers.</param>
        internal void Build(IReadOnlyList <TItem> items, Random generator)
        {
            if (!items?.Any() ?? false)
            {
                return;
            }

            var core = new Core(this.distance, this.Parameters, items);

            core.AllocateNodes(generator);

            var entryPoint = core.Nodes[0];
            var searcher   = new Searcher(core);
            Func <int, int, TDistance> nodeDistance = core.GetDistance;
            var neighboursIdsBuffer = new List <int>(core.Algorithm.GetM(0) + 1);

            for (int nodeId = 1; nodeId < core.Nodes.Count; ++nodeId)
            {
                using (new ScopeLatencyTracker(GraphBuildEventSource.Instance?.GraphInsertNodeLatencyReporter))
                {
                    /*
                     * W ← ∅ // list for the currently found nearest elements
                     * ep ← get enter point for hnsw
                     * L ← level of ep // top layer for hnsw
                     * l ← ⌊-ln(unif(0..1))∙mL⌋ // new element’s level
                     * for lc ← L … l+1
                     *   W ← SEARCH-LAYER(q, ep, ef=1, lc)
                     *   ep ← get the nearest element from W to q
                     * for lc ← min(L, l) … 0
                     *   W ← SEARCH-LAYER(q, ep, efConstruction, lc)
                     *   neighbors ← SELECT-NEIGHBORS(q, W, M, lc) // alg. 3 or alg. 4
                     *     for each e ∈ neighbors // shrink connections if needed
                     *       eConn ← neighbourhood(e) at layer lc
                     *       if │eConn│ > Mmax // shrink connections of e if lc = 0 then Mmax = Mmax0
                     *         eNewConn ← SELECT-NEIGHBORS(e, eConn, Mmax, lc) // alg. 3 or alg. 4
                     *         set neighbourhood(e) at layer lc to eNewConn
                     *   ep ← W
                     * if l > L
                     *   set enter point for hnsw to q
                     */

                    // zoom in and find the best peer on the same level as newNode
                    var bestPeer    = entryPoint;
                    var currentNode = core.Nodes[nodeId];
                    var currentNodeTravelingCosts = new TravelingCosts <int, TDistance>(nodeDistance, nodeId);
                    for (int layer = bestPeer.MaxLayer; layer > currentNode.MaxLayer; --layer)
                    {
                        searcher.RunKnnAtLayer(bestPeer.Id, currentNodeTravelingCosts, neighboursIdsBuffer, layer, 1);
                        bestPeer = core.Nodes[neighboursIdsBuffer[0]];
                        neighboursIdsBuffer.Clear();
                    }

                    // connecting new node to the small world
                    for (int layer = Math.Min(currentNode.MaxLayer, entryPoint.MaxLayer); layer >= 0; --layer)
                    {
                        searcher.RunKnnAtLayer(bestPeer.Id, currentNodeTravelingCosts, neighboursIdsBuffer, layer, this.Parameters.ConstructionPruning);
                        var bestNeighboursIds = core.Algorithm.SelectBestForConnecting(neighboursIdsBuffer, currentNodeTravelingCosts, layer);

                        for (int i = 0; i < bestNeighboursIds.Count; ++i)
                        {
                            int newNeighbourId = bestNeighboursIds[i];
                            core.Algorithm.Connect(currentNode, core.Nodes[newNeighbourId], layer);
                            core.Algorithm.Connect(core.Nodes[newNeighbourId], currentNode, layer);

                            // if distance from newNode to newNeighbour is better than to bestPeer => update bestPeer
                            if (DistanceUtils.Lt(currentNodeTravelingCosts.From(newNeighbourId), currentNodeTravelingCosts.From(bestPeer.Id)))
                            {
                                bestPeer = core.Nodes[newNeighbourId];
                            }
                        }

                        neighboursIdsBuffer.Clear();
                    }

                    // zoom out to the highest level
                    if (currentNode.MaxLayer > entryPoint.MaxLayer)
                    {
                        entryPoint = currentNode;
                    }

                    // report distance cache hit rate
                    GraphBuildEventSource.Instance?.CoreGetDistanceCacheHitRateReporter?.Invoke(core.DistanceCacheHitRate);
                }
            }

            // construction is done
            this.core       = core;
            this.entryPoint = entryPoint;
        }
コード例 #35
0
 public InQueryWeight(InQuery parent, Searcher searcher)
 {
     _parent   = parent;
     _searcher = searcher;
 }
コード例 #36
0
 private void CreateIndexer() {
     _searcher = new IndexSearcher(_reader);
 }
コード例 #37
0
 public override Weight CreateWeight(Searcher searcher)
 {
     return(new PayloadTermWeight(this, this, searcher));
 }
コード例 #38
0
        private void ButtonRun_Click(object sender, EventArgs e)
        {
            if (Searcher.IsBusy)
            {
                if (MessageBox.Show("検索を中止しますか?", "検索中です", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2)
                    == System.Windows.Forms.DialogResult.Yes)
                {
                    Searcher.CancelAsync();
                }
                return;
            }

            RecordView.Rows.Clear();

            var row = new DataGridViewRow();

            row.CreateCells(RecordView);

            var args = new SearchArgument();

            args.ShipName      = (string)ShipName.SelectedItem;
            args.ItemName      = (string)ItemName.SelectedItem;
            args.EquipmentName = (string)EquipmentName.SelectedItem;
            args.DateBegin     = DateBegin.Value;
            args.DateEnd       = DateEnd.Value;
            args.MapAreaID     = (int)MapAreaID.SelectedValue;
            args.MapInfoID     = (int)MapInfoID.SelectedValue;
            args.MapCellID     = (int)MapCellID.SelectedValue;
            args.MapDifficulty = (int)MapDifficulty.SelectedValue;
            args.IsBossOnly    = IsBossOnly.CheckState;
            args.RankS         = RankS.Checked;
            args.RankA         = RankA.Checked;
            args.RankB         = RankB.Checked;
            args.RankX         = RankX.Checked;
            args.MergeRows     = MergeRows.Checked;
            args.BaseRow       = row;

            RecordView.Tag = args;


            // column initialize
            if (MergeRows.Checked)
            {
                RecordView_Name.DisplayIndex   = 0;
                RecordView_Header.HeaderText   = "回数";
                RecordView_Header.Width        = 100;
                RecordView_Header.DisplayIndex = 1;
                RecordView_RankS.Width         = 100;
                RecordView_RankS.Visible       = true;
                RecordView_RankA.Width         = 100;
                RecordView_RankA.Visible       = true;
                RecordView_RankB.Width         = 100;
                RecordView_RankB.Visible       = true;

                RecordView_Date.Visible = false;
                RecordView_Map.Visible  = false;
                RecordView_Rank.Visible = false;
            }
            else
            {
                RecordView_Header.HeaderText   = "";
                RecordView_Header.Width        = 50;
                RecordView_Header.DisplayIndex = 0;
                RecordView_Date.Width          = 150;
                RecordView_Date.Visible        = true;
                RecordView_Map.Width           = 240;
                RecordView_Map.Visible         = true;
                RecordView_Rank.Width          = 40;
                RecordView_Rank.Visible        = true;

                RecordView_RankS.Visible = false;
                RecordView_RankA.Visible = false;
                RecordView_RankB.Visible = false;
            }
            RecordView.ColumnHeadersVisible = true;


            StatusInfo.Text = "検索中です...";
            StatusInfo.Tag  = DateTime.Now;

            Searcher.RunWorkerAsync(args);
        }
コード例 #39
0
 public void SearchForIndex_IncorrectParamsNullParam_ThrowsExeption(string[] arr, string value)
 {
     Assert.Throws <ArgumentNullException>(() => Searcher.SearchForIndex(arr, value));
 }
コード例 #40
0
        public void Searcher_CanEscapeHtmlMarkup(string input, string expectedOutput)
        {
            string output = new Searcher().EscapeHtmlMarkup(input);

            Assert.That(output, Is.EqualTo(expectedOutput));
        }
コード例 #41
0
        public void Can_merge()
        {
            var dir = CreateDir();

            var docs = new List <dynamic>
            {
                new { _id = "0", title = "Rambo First Blood" },
                new { _id = "1", title = "the rain man" },
                new { _id = "2", title = "the good, the bad and the ugly" }
            }.ToDocuments(primaryKeyFieldName: "_id");

            var moreDocs = new List <dynamic>
            {
                new { _id = "3", title = "rambo 2" },
                new { _id = "4", title = "rocky 2" },
                new { _id = "5", title = "the raiders of the lost ark" },
            }.ToDocuments(primaryKeyFieldName: "_id");

            long indexName;
            long indexName2;

            using (var writer = new FullTextUpsertTransaction(
                       dir, new Analyzer(), compression: Compression.NoCompression, documents: docs))
            {
                indexName = writer.Write();

                using (var writer2 = new FullTextUpsertTransaction(
                           dir, new Analyzer(), compression: Compression.NoCompression, documents: moreDocs))
                {
                    indexName2 = writer2.Write();
                }
            }

            using (var merge1 = new MergeCommand(dir))
                merge1.Commit();

            using (var searcher = new Searcher(dir))
            {
                var result = searcher.Search("title:'rambo'");

                Assert.AreEqual(2, result.Total);
                Assert.AreEqual(2, result.Docs.Count);

                Assert.IsTrue(result.Docs.Any(d => d.TableRow.Fields["_id"].Value == "0"));
                Assert.IsTrue(result.Docs.Any(d => d.TableRow.Fields["_id"].Value == "3"));
            }

            using (var merge2 = new MergeCommand(dir))
                merge2.Commit();

            using (var searcher = new Searcher(dir))
            {
                var result = searcher.Search("title:'rambo'");

                Assert.AreEqual(2, result.Total);
                Assert.AreEqual(2, result.Docs.Count);

                Assert.IsTrue(result.Docs.Any(d => d.TableRow.Fields["_id"].Value == "0"));
                Assert.IsTrue(result.Docs.Any(d => d.TableRow.Fields["_id"].Value == "3"));
            }

            using (var merge3 = new MergeCommand(dir))
            {
                merge3.Commit();
            }

            using (var searcher = new Searcher(dir))
            {
                var result = searcher.Search("title:'rambo'");

                Assert.AreEqual(2, result.Total);
                Assert.AreEqual(2, result.Docs.Count);

                Assert.IsTrue(result.Docs.Any(d => d.TableRow.Fields["_id"].Value == "0"));
                Assert.IsTrue(result.Docs.Any(d => d.TableRow.Fields["_id"].Value == "3"));
            }
        }
コード例 #42
0
 internal void SetSearcher(Searcher searcher)
 {
     this.searcher = searcher;
 }
コード例 #43
0
        public ActionResult Index(string word, int?section, int?page)
        {
            var rd = new RouteValueDictionary();

            rd.Add("word", word ?? "");
            rd.Add("section", section ?? 0);
            var category = new StoreCategory()
            {
                LastMod = DateTime.Now, ShowBigIcons = false
            };
            var searcher = new Searcher(word ?? "", section ?? 0);



            var item = searcher.FullTextSearchQuery;

            switch (category.CatalogFilter.ProductOrder)
            {
            default:
                if (category.CatalogFilter.ProductOrder.StartsWith("Char_"))
                {
                    int cid = category.CatalogFilter.ProductOrder.Replace("Char_", "").ToInt();
                    item =
                        item.OrderBy(
                            x =>
                            (x.StoreCharacterToProducts.FirstOrDefault(
                                 z => z.StoreCharacterValue.CharacterID == cid) ??
                             new StoreCharacterToProduct()
                    {
                        StoreCharacterValue = new StoreCharacterValue()
                        {
                            Value = "ZZZZZZZZZZ"
                        }
                    })
                            .StoreCharacterValue.Value.Length).ThenBy(
                            x =>
                            (x.StoreCharacterToProducts.FirstOrDefault(
                                 z => z.StoreCharacterValue.CharacterID == cid) ??
                             new StoreCharacterToProduct()
                    {
                        StoreCharacterValue =
                            new StoreCharacterValue()
                        {
                            Value = "ZZZZZZZZZZ"
                        }
                    })
                            .StoreCharacterValue.Value);
                }
                break;

            case "OrderNum":
                item = item.OrderBy(x => x.StoreProductsToCategories.Any() ? x.StoreProductsToCategories.First().OrderNum : 100000);
                break;

            case "AlphaBet":
                item = item.OrderByDescending(x => x.ViewCount).ThenBy(x => x.Name);
                break;

            case "AlphaBetDesc":
                item = item.OrderBy(x => x.ViewCount).ThenByDescending(x => x.Name);
                break;

            case "Cheap":
                item = item.OrderBy(x => x.SitePrice);
                break;

            case "CheapDesc":
                item = item.OrderByDescending(x => x.SitePrice);
                break;

            case "Expensive":
                item =
                    item.OrderByDescending(x => x.Price);
                break;

            case "AddDate":
                item =
                    item.OrderByDescending(x => x.AddDate);
                break;

            case "VoteOverage":
                item =
                    item.OrderByDescending(x => x.VoteOverage);
                break;
            }

            if ((word ?? "").Length <= 2)
            {
                item = new List <StoreProduct>().AsQueryable();
            }


            var paged = new PagedData <StoreProduct>(item,
                                                     CatalogBrowser.PageNumber,
                                                     category.CatalogFilter.ProductCount, rd);

            category.ProductList = paged;
            return
                (PartialView(category));
        }
コード例 #44
0
        public ActionResult FastList(string term, int section)
        {
            var contentResult = new ContentResult()
            {
                ContentEncoding = Encoding.UTF8, ContentType = "text/plain"
            };



            var result     = new List <SearchItem>();
            var serializer = new JavaScriptSerializer();


            if (string.IsNullOrEmpty(term) || term.Length < 1)
            {
                contentResult.Content = serializer.Serialize(result);
                return(contentResult);
            }
            var searcher = new Searcher(term, section);


            contentResult.Content = serializer.Serialize(searcher.FullTextSearchResult);
            return(contentResult);


            var tmp = searcher.ProductList;

            term = searcher.Term;
            var terms = new[] { term, (term + " ").Replace("  ", " ") };
            var rpts  = new[] { term.Replace(" ", "_"), (term + " ").Replace(" ", "_").Replace("__", "_") };

            var names = tmp.Select(x => x.Name.ToLower()).ToArray();

            for (int i = 0; i < names.Length; i++)
            {
                for (int j = 0; j < terms.Length; j++)
                {
                    names[i] = names[i].Replace(terms[j], rpts[j]);
                }
            }


            var rpl = names
                      .SelectMany(x => x.Split <string>(" ")).Select(x => x.Trim(',', ';'));

            var words =
                rpl
                .Where(
                    x => rpts.Any(z => x.StartsWith(z, StringComparison.CurrentCultureIgnoreCase)) && x.Length > 3)
                .Distinct().Select(x => x.Replace("_", " "));


            var re =
                words.Select(x => new SearchItem()
            {
                label = x, count = tmp.Count(z => z.Name.ToLower().Contains(x.ToLower()))
            })
                .Select(x => new SearchItem()
            {
                label = "{0} - около {1} товаров".FormatWith(x.label, x.count), value = x.label
            });



            contentResult.Content = serializer.Serialize(re);
            return(contentResult);



            /*      var names = tmp.Select(x => x.Name).Take(limit).ToArray();
             *    var r =
             *        GuessGroups(names, 15, 4)
             *            .ToList()
             *            .Select(
             *                x =>
             *                new SearchItem()
             *                    {
             *                        label = string.Format("{0} - (около {1} товаров)", ClearLast(x.Item1), x.Item2.Count()),
             *                        count = x.Item2.Count()
             *                    }).Where(x=> x.label.Contains(term))
             *            .ToArray()
             *            .GroupBy(x => x.label)
             *            .Select(x => new SearchItem() {count = x.Sum(z => z.count), label = x.First().label});
             *
             *
             *    contentResult.Content = serializer.Serialize(r);
             *    return contentResult;*/
        }
コード例 #45
0
 public string SearchForIndex_CorrectParamsDecreasingArr_ExpectedResult(int[] arr, int value)
 {
     return(Searcher.SearchForIndex(arr, value));
 }
コード例 #46
0
 protected internal override Weight CreateWeight(Searcher searcher)
 {
     return(new BoostingTermWeight(this, this, searcher));
 }
コード例 #47
0
 public void SearchForIndex_IncorrectParamsUnsorted_ThrowsExeption(int[] arr, int value)
 {
     Assert.Throws <ArgumentException>(() => Searcher.SearchForIndex(arr, value));
 }
コード例 #48
0
 public BoostingTermWeight(BoostingTermQuery enclosingInstance, BoostingTermQuery query, Searcher searcher) : base(query, searcher)
 {
     InitBlock(enclosingInstance);
 }
コード例 #49
0
 private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
 {
     _searcher = new Searcher("http://search.twitter.com/search.atom?q=");
 }
コード例 #50
0
        private void ButtonRun_Click(object sender, EventArgs e)
        {
            if (Searcher.IsBusy)
            {
                if (MessageBox.Show(EncycloRes.InterruptSearch, EncycloRes.Searching, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2)
                    == System.Windows.Forms.DialogResult.Yes)
                {
                    Searcher.CancelAsync();
                }
                return;
            }

            RecordView.Rows.Clear();

            var row = new DataGridViewRow();

            row.CreateCells(RecordView);


            var args = new SearchArgument
            {
                EquipmentCategory = (int)EquipmentCategory.SelectedValue,
                EquipmentName     = (string)EquipmentName.SelectedItem,
                SecretaryCategory = (int)SecretaryCategory.SelectedValue,
                SecretaryName     = (string)SecretaryName.SelectedItem,
                DateBegin         = DateBegin.Value,
                DateEnd           = DateEnd.Value,
                Recipe            = (string)Recipe.SelectedItem,
                MergeRows         = MergeRows.Checked,
                BaseRow           = row
            };

            RecordView.Tag = args;


            if (!MergeRows.Checked)
            {
                RecordView_Header.Width         = 50;
                RecordView_Header.HeaderText    = "";
                RecordView_Name.AutoSizeMode    = DataGridViewAutoSizeColumnMode.Fill;
                RecordView_Name.HeaderText      = "Equipment";
                RecordView_Date.Width           = 140;
                RecordView_Date.Visible         = true;
                RecordView_Recipe.Width         = 95;
                RecordView_Recipe.Visible       = true;
                RecordView_FlagshipType.Width   = 40;
                RecordView_FlagshipType.Visible = true;
                RecordView_Flagship.Width       = 105;
                RecordView_Flagship.Visible     = true;
                RecordView_Detail.Visible       = false;
            }
            else
            {
                RecordView_Header.Width         = 150;
                RecordView_Header.HeaderText    = EncycloRes.Tries;
                RecordView_Name.AutoSizeMode    = DataGridViewAutoSizeColumnMode.NotSet;
                RecordView_Name.Width           = 160;
                RecordView_Name.HeaderText      = ((EquipmentName.Text != NameAny && EquipmentName.Text != NameExist) || (int)EquipmentCategory.SelectedValue != -1) ? "Recipe" : "Equipment";
                RecordView_Date.Visible         = false;
                RecordView_Recipe.Visible       = false;
                RecordView_FlagshipType.Visible = false;
                RecordView_Flagship.Visible     = false;
                RecordView_Detail.HeaderText    = (SecretaryName.Text != NameAny || (int)SecretaryCategory.SelectedValue != -1) ? "Recipe Tries" : "Ship Type";
                RecordView_Detail.Visible       = true;
            }
            RecordView.ColumnHeadersVisible = true;

            StatusInfo.Text = EncycloRes.Searching + "...";
            StatusInfo.Tag  = DateTime.Now;

            Searcher.RunWorkerAsync(args);
        }
コード例 #51
0
        /// <inheritdoc />
        public SabberStoneAction Act(SabberStoneState state)
        {
            var timer     = Stopwatch.StartNew();
            var stateCopy = (SabberStoneState)state.Copy();

            if (_debug)
            {
                Console.WriteLine();
            }
            if (_debug)
            {
                Console.WriteLine(Name());
            }
            if (_debug)
            {
                Console.WriteLine($"Starting an LSI search in turn {(stateCopy.Game.Turn + 1) / 2}");
            }

            // Create a new LSI search
            var search = new LSI <List <SabberStoneAction>, SabberStoneState, SabberStoneAction, object, TreeSearchNode <SabberStoneState, SabberStoneAction>, OddmentTable <SabberStonePlayerTask> >(
                SideInformationStrategy,
                SamplingStrategy,
                Playout,
                Evaluation,
                GameLogic,
                BudgetEstimationStrategy
                );

            // Reset the solutions collection
            EnsembleSolutions = new List <SabberStoneAction>();

            // Create a SearchContext that just holds the current state as Source and the Search.
            var context = SearchContext <List <SabberStoneAction>, SabberStoneState, SabberStoneAction, object, SabberStoneAction> .Context(EnsembleSolutions, stateCopy, null, null, search, null);

            // The Playout strategy will call the Goal strategy from the context, so we set it here
            context.Goal = Goal;

            // Execute the search
            Ensemble.EnsembleSearch(context, Searcher.Search, EnsembleSize);
            SamplesSpent = EnsembleSolutions.Sum(i => i.BudgetUsed);

            // Determine a solution
            var solution = Searcher.VoteForSolution(EnsembleSolutions, state);

            timer.Stop();
            if (_debug)
            {
                Console.WriteLine();
            }
            if (_debug)
            {
                Console.WriteLine($"LSI returned with solution: {solution}");
            }
            if (_debug)
            {
                Console.WriteLine($"My total calculation time was: {timer.ElapsedMilliseconds}ms");
            }

            // Check if the solution is a complete action.
            if (!solution.IsComplete())
            {
                // Otherwise add an End-Turn task before returning.
                solution.Tasks.Add((SabberStonePlayerTask)EndTurnTask.Any(Player));
            }

            // If we are estimating the budget by using the previous search's results, save these now
            if (BudgetEstimation == BudgetEstimationType.PreviousSearchAverage && BudgetEstimationStrategy is PreviousSearchAverageBudgetEstimationStrategy estimationStrategy)
            {
                estimationStrategy.PreviousSearchTime       = timer.ElapsedMilliseconds;
                estimationStrategy.PreviousSearchIterations = SamplesSpent;
            }

            if (_debug)
            {
                Console.WriteLine();
            }
            return(solution);
        }
コード例 #52
0
        /// <summary>
        /// Gets the Best Bets Categories for a given term
        /// </summary>
        /// <param name="term">The term to search</param>
        /// <param name="language">The two character language code to search, null or string.empty if searching all.</param>
        public static BestBetResult[] Search(string term, string language)
        {
            List <BestBetResult> includedResults = new List <BestBetResult>();


            string        cleanTerm       = BestBetUtils.CleanTerm(term);
            List <string> tokenizedString = BestBetUtils.TokenizeStringStandard(cleanTerm);

            Searcher searcher = Index.BestBetsIndex.Instance.GetSearcher();

            Query q = BuildQuery(tokenizedString, language);

            TopDocs docs = searcher.Search(q, null, searcher.MaxDoc);


            List <string> excludedIDs = new List <string>();

            // Loop through results and process each result.
            foreach (var res in docs.ScoreDocs)
            {
                //Fetch the doc from the index.
                var doc = searcher.Doc(res.Doc);

                //int docID = res.Doc;
                string categoryID   = doc.Get("cat_id");
                string categoryName = doc.Get("cat_name");
                bool   isExactMatch = bool.Parse(doc.Get("is_exact"));
                bool   isExclusion  = bool.Parse(doc.Get("is_exclude"));
                string terms        = doc.Get("terms");
                int    numTerms     = int.Parse(doc.Get("term_count"));
                //Score = res.Score

                //If we do not match exactly, don't add this
                if (isExactMatch && (numTerms != tokenizedString.Count))
                {
                    continue;
                }

                if (isExclusion)
                {
                    if (!excludedIDs.Contains(categoryID))
                    {
                        excludedIDs.Add(categoryID);
                    }

                    includedResults.RemoveAll(item => item.CategoryID == categoryID);
                }
                else
                {
                    if (!includedResults.Exists(item => item.CategoryID == categoryID) && !excludedIDs.Contains(categoryID))
                    {
                        includedResults.Add(new BestBetResult()
                        {
                            CategoryID   = categoryID,
                            CategoryName = categoryName
                        });
                    }
                }
            }


            return(includedResults.ToArray());
        }
コード例 #53
0
 public PayloadTermWeight(PayloadTermQuery enclosingInstance, PayloadTermQuery query, Searcher searcher) : base(query, searcher)
 {
     InitBlock(enclosingInstance);
 }
コード例 #54
0
        /// <summary>
        /// This method uses a custom HitCollector implementation which simply prints out
        /// the docId and score of every matching document.
        ///
        /// This simulates the streaming search use case, where all hits are supposed to
        /// be processed, regardless of their relevance.
        /// </summary>
        public static void  DoStreamingSearch(Searcher searcher, Query query)
        {
            Collector streamingHitCollector = new AnonymousClassCollector();

            searcher.Search(query, streamingHitCollector);
        }
コード例 #55
0
 public PayloadNearSpanWeight(PayloadNearQuery enclosingInstance, SpanQuery query, Searcher searcher) : base(query, searcher)
 {
     InitBlock(enclosingInstance);
 }
コード例 #56
0
 public override Weight CreateWeight(Searcher searcher, IState state)
 {
     return(new InQueryWeight(this, searcher));
 }
コード例 #57
0
        /// <summary> This demonstrates a typical paging search scenario, where the search engine presents
        /// pages of size n to the user. The user can then go to the next page if interested in
        /// the next hits.
        ///
        /// When the query is executed for the first time, then only enough results are collected
        /// to fill 5 result pages. If the user wants to page beyond this limit, then the query
        /// is executed another time and all hits are collected.
        ///
        /// </summary>
        public static void  DoPagingSearch(StreamReader input, Searcher searcher, Query query, int hitsPerPage, bool raw, bool interactive)
        {
            // Collect enough docs to show 5 pages
            var collector = TopScoreDocCollector.Create(5 * hitsPerPage, false);

            searcher.Search(query, collector);
            var hits = collector.TopDocs().ScoreDocs;

            int numTotalHits = collector.TotalHits;

            Console.Out.WriteLine(numTotalHits + " total matching documents");

            int start = 0;
            int end   = Math.Min(numTotalHits, hitsPerPage);

            while (true)
            {
                if (end > hits.Length)
                {
                    Console.Out.WriteLine("Only results 1 - " + hits.Length + " of " + numTotalHits + " total matching documents collected.");
                    Console.Out.WriteLine("Collect more (y/n) ?");
                    String line = input.ReadLine();
                    if (String.IsNullOrEmpty(line) || line[0] == 'n')
                    {
                        break;
                    }

                    collector = TopScoreDocCollector.Create(numTotalHits, false);
                    searcher.Search(query, collector);
                    hits = collector.TopDocs().ScoreDocs;
                }

                end = Math.Min(hits.Length, start + hitsPerPage);

                for (int i = start; i < end; i++)
                {
                    if (raw)
                    {
                        // output raw format
                        Console.Out.WriteLine("doc=" + hits[i].Doc + " score=" + hits[i].Score);
                        continue;
                    }

                    Document doc  = searcher.Doc(hits[i].Doc);
                    String   path = doc.Get("path");
                    if (path != null)
                    {
                        Console.Out.WriteLine((i + 1) + ". " + path);
                        String title = doc.Get("title");
                        if (title != null)
                        {
                            Console.Out.WriteLine("   Title: " + doc.Get("title"));
                        }
                    }
                    else
                    {
                        Console.Out.WriteLine((i + 1) + ". " + "No path for this document");
                    }
                }

                if (!interactive)
                {
                    break;
                }

                if (numTotalHits >= end)
                {
                    bool quit = false;
                    while (true)
                    {
                        Console.Out.Write("Press ");
                        if (start - hitsPerPage >= 0)
                        {
                            Console.Out.Write("(p)revious page, ");
                        }
                        if (start + hitsPerPage < numTotalHits)
                        {
                            Console.Out.Write("(n)ext page, ");
                        }
                        Console.Out.WriteLine("(q)uit or enter number to jump to a page.");

                        String line = input.ReadLine();
                        if (String.IsNullOrEmpty(line) || line[0] == 'q')
                        {
                            quit = true;
                            break;
                        }
                        if (line[0] == 'p')
                        {
                            start = Math.Max(0, start - hitsPerPage);
                            break;
                        }
                        else if (line[0] == 'n')
                        {
                            if (start + hitsPerPage < numTotalHits)
                            {
                                start += hitsPerPage;
                            }
                            break;
                        }
                        else
                        {
                            int page;
                            if (Int32.TryParse(line, out page))
                            {
                                if ((page - 1) * hitsPerPage < numTotalHits)
                                {
                                    start = (page - 1) * hitsPerPage;
                                    break;
                                }
                                else
                                {
                                    Console.Out.WriteLine("No such page");
                                }
                            }
                            else
                            {
                                Console.Out.WriteLine("Unrecognized page number. Quitting.");
                                quit = true;
                                break;
                            }
                        }
                    }
                    if (quit)
                    {
                        break;
                    }
                    end = Math.Min(numTotalHits, start + hitsPerPage);
                }
            }
        }
コード例 #58
0
 public SearcherTests()
 {
     invertedIndex = GeneralFunctions.InitialInvertedIndex();
     searcher      = new Searcher();
 }
コード例 #59
0
ファイル: HomeController.cs プロジェクト: dsb92/embeddedstock
        //
        // GET: /Home/
        public ActionResult Index(string searchString, string category, int?page)
        {
            var componentsPerPage   = new int?();
            var mySearcher          = new Searcher();
            var myComponentDataUtil = new ComponentDataUtil();
            var myComponents        = new Components();
            var emptyComponent      = new Component();
            var listOfQuantity      = new List <int>();

            emptyComponent.ComponentName = "Ingen Komponenter Fundet";
            componentsPerPage            = 20;

            // Tjekker om der er indtastet en søgning, hvis ja, hentes en komponentliste med de indtastede tags
            if (!String.IsNullOrEmpty(searchString))
            {
                var SearchTags = mySearcher.SplitString(searchString);

                foreach (var component in  myComponentDataUtil.GetComponents(SearchTags))
                {
                    myComponents._components.Add(component);
                }
            }
            else
            {
                //Tjekker om man har trykket på en kategori, hvis ja, hentes en komponentliste med den kategori
                if (!String.IsNullOrEmpty(category))
                {
                    foreach (var component in myComponentDataUtil.GetAllComponents())
                    {
                        if (component.Category == category)
                        {
                            myComponents._components.Add(component);
                        }
                    }
                }
                else
                {
                    foreach (var component in myComponentDataUtil.GetAllComponents())
                    {
                        myComponents._components.Add(component);
                    }
                }
            }

            //Opretter liste med alle kategorier
            var listOfCategories = myComponents.GetAllCategories();

            //Sætter listen med kategorier i alfabetisk rækkefølge
            listOfCategories.Sort();

            //Opretter liste til hvis der ikke eksisterer nogen kategorier
            var noneFound = new List <string> {
                "Ingen kategorier fundet"
            };


            if (listOfCategories.Count != 0)
            {
                ViewData["Categories"] = listOfCategories;
            }
            else
            {
                ViewData["Categories"] = noneFound;
            }

            //Sorterer listen med komponenter, så den er i alfabetisk rækkefølge og komponenterne kun ankommer en gang.
            var sortedList = myComponents._components.OrderBy(c => c.ComponentName).DistinctBy(c => c.SerieNr).ToList();

            //Udregner hvor mange sider, der skal være på hjemmesiden
            ViewData["NumberOfPages"] = (sortedList.Count + componentsPerPage - 1) / componentsPerPage;

            //Udregner hvor mange der er af hver komponent type(taget ud af serieNr), lægger det derefter over i en ny liste

            foreach (var component in sortedList)
            {
                listOfQuantity.Add(myComponents.GetAvailableQuantity(component.SerieNr));
            }


            //Hvis dette tjek går igennem, er der ikke nok komponenter til at vise den ønskede side
            if (((componentsPerPage * page.GetValueOrDefault())) >= sortedList.Count || page < 0)
            {
                myComponents._components.Clear();
                myComponents._components.Add(emptyComponent);
                listOfQuantity.Clear();
                listOfQuantity.Add(0);
                return(View(myComponents._components));
            }

            ViewData["AvailableQuantity"] = listOfQuantity;

            //Hvis dette tjek går igennem har man komponenter til overs, men ikke nok til at lave en "hel" side
            if (((componentsPerPage * page.GetValueOrDefault()) + componentsPerPage) > sortedList.Count)
            {
                return(View(sortedList.GetRange((page * componentsPerPage).GetValueOrDefault(), sortedList.Count - (componentsPerPage * page).GetValueOrDefault())));
            }
            //Returnerer componentsPerPage, startende fra den side man er kommet til
            return(View(sortedList.GetRange(((page * componentsPerPage).GetValueOrDefault()), componentsPerPage.GetValueOrDefault())));
        }
コード例 #60
0
 protected override IQueryable <UserEvent> Selector(DataServiceQuery <UserEvent> userEvents, Searcher searcher) => userEvents
 .Expand(userEvent => userEvent.User)
 .Expand(userEvent => userEvent.Event)
 .Where(userEvent => userEvent.User.Id == Guid.Parse(Id));