使用.net调用Solr

1.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SolrNet;
using SampleSolrApp.Models;
using SolrNet.Schema;
using SolrNet.Attributes;

/// <summary>
///Class2 的摘要说明
/// </summary>
public class Class2
{
 public Class2()
 {
  //
  //TODO: 在此处添加构造函数逻辑
  //

        Product p = new Product();
 }

    [SolrUniqueKey("id")]
    public string Id { get; set; }

    [SolrField("name")]
    public string Name { get; set; }

    [SolrField("myself")]
    public string MySelf { get; set; }


    [SolrField("yourself")]
    public string YourSelf { get; set; }

    [SolrField("manu")]
    public string Manufacturer { get; set; }

    [SolrField("cat")]
    public ICollection<string> Categories { get; set; }

    [SolrField("features")]
    public ICollection<string> Features { get; set; }

    [SolrField("popularity")]
    public int Popularity { get; set; }

    [SolrField("price")]
    public decimal Price { get; set; }

    [SolrField("inStock")]
    public bool InStock { get; set; }

 

//    [TestFixtureSetUp]
//    public void FixtureSetup()
//    {
//        Startup.Init<Product>("http://localhost:8983/solr");
//    }
}

 

 

//=====================================================================================

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SolrNet;
using SampleSolrApp.Models;
using Microsoft.Practices.ServiceLocation;
using SolrNet.Commands.Parameters;

public partial class MyTest : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            ISolrOperations<Class2> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Class2>>();
        }
        catch (NullReferenceException exp)
        {
            Startup.Init<Class2>("http://localhost:8983/solr");
        }

        //delete2();
        //add2();
        query2();

    }

    #region 成功的了

    /// <summary>
    /// 添加数据
    /// </summary>
    public void add2()
    {
        //Class2 p = new Class2
        //{
        //    Id = "SP2221",
        //    Name = "name 2222",
        //    MySelf = "myself 2222",
        //    YourSelf="yourself 2222",
        //    Manufacturer = "manu 2223",
        //    Categories = new[] {
        //        "cat 2224",
        //        "cat 2225",
        //    },
        //    Features = new[]{
        //        "features2226",
        //        "features2227",
        //    },
        //    Popularity = 6,
        //    Price = 92,
        //    InStock = true,
        //};

        //Class2 p = new Class2();
        //p.Id = "china";
        //p.Name = "中华人民共和国";
        //p.MySelf = "王才华";
        //p.YourSelf = "理正软件";
        //p.Manufacturer = "Leading Soft";
        //p.Categories = new[]{
        //    "MIS",
        //    "CAD"
        //};
        //p.Features = new[]{
        //    "Expencive",
        //    "No User"
        //};
        //p.Popularity = 55;
        //p.Price = 11111;
        //p.InStock = false;

        Class2 p = new Class2();
        p.Id = "chinaNo";
        p.Name = "没有这个";
        p.MySelf = "李";

        ISolrOperations<Class2> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Class2>>();
        solr.Add(p);
        solr.Commit();
    }

    /// <summary>
    /// 查询数据
    /// </summary>
    public void query2()
    {
        ISolrOperations<Class2> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Class2>>();

        //=========================Simple query==========================
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("2222")); //从默认字段中搜索
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("popularity:6")); //从指定的字段中进行搜索
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("中华*")); //模糊查询

        //========================Query by field==========================
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQueryByField("popularity", "6")); //从指定的字段中进行搜索

        //========================Query by range==========================
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQueryByRange<decimal>("price", 10000m, 12222.50m)); //从指定字段的范围区间进行搜索

        //=====================Query by list of values====================
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQueryInList("name", "2222", "中华人民共和国")); //从集合中检索
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("name:2222 OR name:中华人民共和国")); //从集合中检索

        //===================="Any value" query===========================
        //ISolrQueryResults<Class2> results = solr.Query(new SolrHasValueQuery("name")); //包含某个字段的记录

        //====================Query operators=============================
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("2222") && new SolrQuery("myself")); //且的关系,两个条件都需满足  "2222 AND myself"
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("2222") || new SolrQuery("Leading Soft")); //或的关系,两个结果集合并  "2222 Leading Soft"
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("2222") + new SolrQuery("Leading Soft")); //或的关系,两个结果集相加 "2222 Leading Soft"
        //ISolrQueryResults<Class2> results = solr.Query(!new SolrQuery("2222")); // 不包含的结果集 "-2222"
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("2222") - new SolrQuery("my")); //包含2222但不包含my "2222 - my"
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("2222") + !new SolrQuery("my")); //包含2222但不包含my "2222 - my"
        //ISolrQueryResults<Class2> results = solr.Query(new SolrMultipleCriteriaQuery(new[] { new SolrQuery("2222"), new SolrQuery("Leading Soft") })); //与+含义相同
        //ISolrQueryResults<Class2> results = solr.Query(new SolrMultipleCriteriaQuery(new[] { new SolrQuery("2222"), new SolrQuery("myself") }, "AND")); //与&&含义相同

        //====================Filter queries===============================
        //ISolrQueryResults<Class2> results = solr.Query(SolrQuery.All, new QueryOptions {
        //    FilterQueries = new ISolrQuery[] {
        //        new SolrQueryByField("name", "2222"),
        //        new SolrQueryByRange<decimal>("price", 1m, 200m),
        //    }
        //});   //从All结果集里面再进行过滤

        //=======================Fields=====================================
        //ISolrQueryResults<Class2> results = solr.Query(new SolrQuery("2222"), new QueryOptions { Fields = new[] { "id", "manu", "name", "price" } }); //只查询出特定的列

        //=======================Sorting====================================
        //ISolrQueryResults<Class2> results = solr.Query(SolrQuery.All,
        //    new QueryOptions {
        //        OrderBy = new[] {
        //            new SortOrder("name", Order.DESC),
        //            SortOrder.Parse("id asc")
        //        }
        //    });  //排序

        //======================Pagination==================================
        //ISolrQueryResults<Class2> results = solr.Query("2222", new QueryOptions { Start = 10, Rows = 25 });  //从指定位置开始,搜索指定记录信息

        //====================Additional parameters=========================
        //ISolrQueryResults<Class2> results = solr.Query(SolrQuery.All,
        //    new QueryOptions {
        //        ExtraParams = new Dictionary<string, string> {
        //        { "timeAllowed", "100" }
        //        }
        //    });

        ISolrQueryResults<Class2> results = solr.Query(SolrQuery.All,
            new QueryOptions
            {
                ExtraParams = new Dictionary<string, string> {
                { "qt", "standard" }
                }
            });

        //=====================LocalParams================================
        //ISolrQueryResults<Class2> results = solr.Query(new LocalParams { { "type", "dismax" }, { "qf", "myself" } } + new SolrQuery("solr rocks"));

        Assert.AreEqual(1, results.Count);
        if (results.Count == 1)
        {
            Response.Write("结果:" + results.Count + "   " + results[0].Price);
        }
        else
        {
            Response.Write("结果:" + results.Count);
        }


        //===============================================================
        //-------------------------Facets--------------------------------
        //===============================================================
        //ISolrQueryResults<Class2> results = solr.Query(SolrQuery.All,
        //    new QueryOptions {
        //        Rows = 0,
        //        Facet = new FacetParameters {
        //            Queries = new[] {
        //                new SolrFacetFieldQuery("category")
        //            }
        //        }
        //    });
        //foreach (var facet in results.FacetFields["category"]) {
        //    Response.Write(facet.Key + ":" + facet.Value + "   ");
        //}
    }

    /// <summary>
    /// 删除数据
    /// </summary>
    public void delete2()
    {
        ISolrOperations<Class2> solr = ServiceLocator.Current.GetInstance<ISolrOperations<Class2>>();
        //solr.Delete("SP2221"); //根据ID进行删除
        solr.Delete(new SolrQuery("*:*")); //删除全部数据
        solr.Commit();
    }

    #endregion
}

 

//=====================================================================================

        String url = "http://localhost:8983/solr/select/?q=solr";
        WebResponse wr_result = null;
        StringBuilder txthtml = new StringBuilder();
        try
        {
            WebRequest wr_req = WebRequest.Create(url);
            wr_result = wr_req.GetResponse();
            Stream ReceiveStream = wr_result.GetResponseStream();
            Encoding encode = System.Text.Encoding.GetEncoding("gb2312");
            StreamReader sr = new StreamReader(ReceiveStream, encode);
            if (true)
            {
                Char[] read = new Char[256];
                int count = sr.Read(read, 0, 256);
                while (count > 0)
                {
                    String str = new String(read, 0, count);
                    txthtml.Append(str);
                    count = sr.Read(read, 0, 256);
                }
            }
        }
        catch (Exception)
        {
            txthtml.Append("err");
        }
        finally
        {
            if (wr_result != null)
            {
                wr_result.Close();
            }
        }

//==============================================================================

            DataTable table = new DataTable();
            string strcon = "Data Source=111;Initial Catalog=MMS_DB;User ID=sa;Password=123;Connect Timeout=30"";
            DbConnection conn = new SqlConnection(strcon);
            conn.Open();
            DbCommand command = new SqlCommand();
            command.Connection = conn;
            command.CommandText = "Select * From AA";
            DbDataAdapter adp = new SqlDataAdapter();
            adp.SelectCommand = command;
            adp.Fill(table);
            conn.Close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值