Beispiel #1
0
        void LUCENENET_100_ClientSearch()
        {
            try
            {
                Lucene.Net.Search.Searchable    s        = (Lucene.Net.Search.Searchable)Activator.GetObject(typeof(Lucene.Net.Search.Searchable), @"tcp://localhost:38087/Searcher");
                Lucene.Net.Search.MultiSearcher searcher = new Lucene.Net.Search.MultiSearcher(new Lucene.Net.Search.Searchable[] { s });

                Lucene.Net.Search.Query q = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("field1", "moon"));

                Lucene.Net.Search.Sort sort = new Lucene.Net.Search.Sort();
                sort.SetSort(new Lucene.Net.Search.SortField("field2", Lucene.Net.Search.SortField.INT));

                Lucene.Net.Search.TopDocs h = searcher.Search(q, null, 100, sort);
            }
            catch (Exception ex)
            {
                LUCENENET_100_Exception = ex;
            }
            finally
            {
                LUCENENET_100_testFinished = true;
            }
        }
Beispiel #2
0
 /// <summary>
 /// 搜索并返回分页数据
 /// </summary>
 /// <param name="indexPath">索引路径</param>
 /// <param name="searchQuery"><see cref="Lucene.Net.Search.Query"/></param>
 /// <param name="filter"><see cref="Lucene.Net.Search.Filter"/></param>
 /// <param name="sort"><see cref="Lucene.Net.Search.Sort"/></param>
 /// <param name="pageIndex">当前页码</param>
 /// <param name="pageSize">每页记录数</param>
 /// <returns>内容为<see cref="Lucene.Net.Documents.Document"/>的分页数据集合</returns>
 public Tunynet.PagingDataSet <Lucene.Net.Documents.Document> Search(string indexPath, Lucene.Net.Search.Query searchQuery, Lucene.Net.Search.Filter filter, Lucene.Net.Search.Sort sort, int pageIndex, int pageSize)
 {
     return(GetSearchEngine(indexPath).Search(searchQuery, filter, sort, pageIndex, pageSize));
 }
Beispiel #3
0
 /// <summary>
 /// 搜索并返回前topNumber条数据
 /// </summary>
 /// <param name="indexPath">索引路径</param>
 /// <param name="searchQuery"><see cref="Lucene.Net.Search.Query"/></param>
 /// <param name="filter"><see cref="Lucene.Net.Search.Filter"/></param>
 /// <param name="sort"><see cref="Lucene.Net.Search.Sort"/></param>
 /// <param name="topNumber">最多返回多少条数据</param>
 /// <returns></returns>
 public IEnumerable <Lucene.Net.Documents.Document> Search(string indexPath, Lucene.Net.Search.Query searchQuery, Lucene.Net.Search.Filter filter, Lucene.Net.Search.Sort sort, int topNumber)
 {
     return(GetSearchEngine(indexPath).Search(searchQuery, filter, sort, topNumber));
 }
 // Make sure the documents returned by the search match the expected list
 // Copied from TestSort.java
 private void AssertMatches(IndexSearcher searcher, Query query, Sort sort, string expectedResult)
 {
     ScoreDoc[] result = searcher.Search(query, null, 1000, sort).ScoreDocs;
     StringBuilder buff = new StringBuilder(10);
     int n = result.Length;
     for (int i = 0; i < n; ++i)
     {
         Document doc = searcher.Doc(result[i].Doc);
         IndexableField[] v = doc.GetFields("tracer");
         for (int j = 0; j < v.Length; ++j)
         {
             buff.Append(v[j].StringValue);
         }
     }
     Assert.AreEqual(expectedResult, buff.ToString());
 }
        // Test using various international locales with accented characters (which
        // sort differently depending on locale)
        //
        // Copied (and slightly modified) from
        // Lucene.Net.Search.TestSort.testInternationalSort()
        //
        // TODO: this test is really fragile. there are already 3 different cases,
        // depending upon unicode version.
        public virtual void TestCollationKeySort(Analyzer usAnalyzer, Analyzer franceAnalyzer, Analyzer swedenAnalyzer, Analyzer denmarkAnalyzer, string usResult, string frResult, string svResult, string dkResult)
        {
            Directory indexStore = NewDirectory();
            IndexWriter writer = new IndexWriter(indexStore, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random(), MockTokenizer.WHITESPACE, false)));

            // document data:
            // the tracer field is used to determine which document was hit
            string[][] sortData = new string[][] { new string[] { "A", "x", "p\u00EAche", "p\u00EAche", "p\u00EAche", "p\u00EAche" }, new string[] { "B", "y", "HAT", "HAT", "HAT", "HAT" }, new string[] { "C", "x", "p\u00E9ch\u00E9", "p\u00E9ch\u00E9", "p\u00E9ch\u00E9", "p\u00E9ch\u00E9" }, new string[] { "D", "y", "HUT", "HUT", "HUT", "HUT" }, new string[] { "E", "x", "peach", "peach", "peach", "peach" }, new string[] { "F", "y", "H\u00C5T", "H\u00C5T", "H\u00C5T", "H\u00C5T" }, new string[] { "G", "x", "sin", "sin", "sin", "sin" }, new string[] { "H", "y", "H\u00D8T", "H\u00D8T", "H\u00D8T", "H\u00D8T" }, new string[] { "I", "x", "s\u00EDn", "s\u00EDn", "s\u00EDn", "s\u00EDn" }, new string[] { "J", "y", "HOT", "HOT", "HOT", "HOT" } };

            FieldType customType = new FieldType();
            customType.Stored = true;

            for (int i = 0; i < sortData.Length; ++i)
            {
                Document doc = new Document();
                doc.Add(new Field("tracer", sortData[i][0], customType));
                doc.Add(new TextField("contents", sortData[i][1], Field.Store.NO));
                if (sortData[i][2] != null)
                {
                    doc.Add(new TextField("US", usAnalyzer.TokenStream("US", new StringReader(sortData[i][2]))));
                }
                if (sortData[i][3] != null)
                {
                    doc.Add(new TextField("France", franceAnalyzer.TokenStream("France", new StringReader(sortData[i][3]))));
                }
                if (sortData[i][4] != null)
                {
                    doc.Add(new TextField("Sweden", swedenAnalyzer.TokenStream("Sweden", new StringReader(sortData[i][4]))));
                }
                if (sortData[i][5] != null)
                {
                    doc.Add(new TextField("Denmark", denmarkAnalyzer.TokenStream("Denmark", new StringReader(sortData[i][5]))));
                }
                writer.AddDocument(doc);
            }
            writer.ForceMerge(1);
            writer.Dispose();
            IndexReader reader = DirectoryReader.Open(indexStore);
            IndexSearcher searcher = new IndexSearcher(reader);

            Sort sort = new Sort();
            Query queryX = new TermQuery(new Term("contents", "x"));
            Query queryY = new TermQuery(new Term("contents", "y"));

            sort.SetSort(new SortField("US", SortField.Type_e.STRING));
            AssertMatches(searcher, queryY, sort, usResult);

            sort.SetSort(new SortField("France", SortField.Type_e.STRING));
            AssertMatches(searcher, queryX, sort, frResult);

            sort.SetSort(new SortField("Sweden", SortField.Type_e.STRING));
            AssertMatches(searcher, queryY, sort, svResult);

            sort.SetSort(new SortField("Denmark", SortField.Type_e.STRING));
            AssertMatches(searcher, queryY, sort, dkResult);
            reader.Dispose();
            indexStore.Dispose();
        }
 private int RunQuery(IndexSearcher s, Query q)
 {
     s.Search(q, 10);
     int hitCount = s.Search(q, null, 10, new Sort(new SortField("title", SortField.Type_e.STRING))).TotalHits;
     if (DefaultCodecSupportsDocValues())
     {
         Sort dvSort = new Sort(new SortField("title", SortField.Type_e.STRING));
         int hitCount2 = s.Search(q, null, 10, dvSort).TotalHits;
         Assert.AreEqual(hitCount, hitCount2);
     }
     return hitCount;
 }
Beispiel #7
0
        void LUCENENET_100_ClientSearch()
        {
            try
            {
                Lucene.Net.Search.Searchable s = (Lucene.Net.Search.Searchable)Activator.GetObject(typeof(Lucene.Net.Search.Searchable), @"tcp://localhost:38087/Searcher");
                Lucene.Net.Search.MultiSearcher searcher = new Lucene.Net.Search.MultiSearcher(new Lucene.Net.Search.Searchable[] { s });

                Lucene.Net.Search.Query q = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("field1", "moon"));

                Lucene.Net.Search.Sort sort = new Lucene.Net.Search.Sort();
                sort.SetSort(new Lucene.Net.Search.SortField("field2", Lucene.Net.Search.SortField.INT));

                Lucene.Net.Search.TopDocs h = searcher.Search(q, null,100, sort);
            }
            catch (Exception ex)
            {
                LUCENENET_100_Exception = ex;
            }
            finally
            {
                LUCENENET_100_testFinished = true;
            }
        }
 /// <summary>
 /// 搜索并返回分页数据
 /// </summary>
 /// <param name="searchQuery"><see cref="Lucene.Net.Search.Query"/></param>
 /// <param name="filter"><see cref="Lucene.Net.Search.Filter"/></param>
 /// <param name="sort"><see cref="Lucene.Net.Search.Sort"/></param>
 /// <param name="pageIndex">当前页码</param>
 /// <param name="pageSize">每页记录数</param>
 /// <returns>内容为<see cref="Lucene.Net.Documents.Document"/>的分页数据集合</returns>
 public PagingDataSet <Document> Search(Lucene.Net.Search.Query searchQuery, Lucene.Net.Search.Filter filter, Lucene.Net.Search.Sort sort, int pageIndex, int pageSize)
 {
     return(this.Channel.Search(this.indexPath, searchQuery, filter, sort, pageIndex, pageSize));
 }
 /// <summary>
 /// 搜索并返回前topNumber条数据
 /// </summary>
 /// <param name="searchQuery"><see cref="Lucene.Net.Search.Query"/></param>
 /// <param name="filter"><see cref="Lucene.Net.Search.Filter"/></param>
 /// <param name="sort"><see cref="Lucene.Net.Search.Sort"/></param>
 /// <param name="topNumber">最多返回多少条数据</param>
 /// <returns></returns>
 public IEnumerable <Document> Search(Lucene.Net.Search.Query searchQuery, Lucene.Net.Search.Filter filter, Lucene.Net.Search.Sort sort, int topNumber)
 {
     return(this.Channel.Search(this.indexPath, searchQuery, filter, sort, topNumber));
 }