solr笔记 solrnet客户端实现高亮显示以及搜索建议(四)

 solrnet使用

   1.首先引入solrnet的dll   http://pan.baidu.com/s/1bpA3OnX

   这个是我封装的代码呼呼   http://pan.baidu.com/s/1c2drMqk

    gloab.asax  需要配置

 

    泛型类型为你的接收实体类型  参数为核心 我现在是多核心 默认应该是

   

 

 同时接收实体要映射solr字段

 

复制代码
   public class Product
    {

        [PrimaryKey(SequenceExpression = "Seq_Product_ProductID"), SolrUniqueKey("id")]
        public string ProductID
        {
            get;
            set;
        }

        /// <summary>
        /// 记录ID
        /// </summary>
        [DBDefault, SolrField("Recordid")]
        public string RecordID
        {
            get;
            set;
        }

        /// <summary>
        ///  名称
        /// </summary>
         [SolrField("ProductName")]
        public string Name
        {
            get;
            set;
        }

        /// <summary>
        /// 型号
        /// </summary>
        public string Model
        {
            get;
            set;
        }

        /// <summary>
        ///  成本价 对应出厂价
        /// </summary>
          [SolrField("CostPrice")]
        public double CostPrice
        {
            get;
            set;
        }

        //批发价 对应套餐优惠价
          [SolrField("WholesalePrice")]
        public double WholesalePrice
        {
            get;
            set;

        }

        /// <summary>
        ///  零售价 对应套餐零售价
        /// </summary>
        [SolrField("productprice")]
        public double RetailPrice
        {
            get;
            set;
        }

        /// <summary>
        ///  市场价 对应市场价
        /// </summary>
          [SolrField("MarketPrice")]
        public double MarketPrice
        {
            get;
            set;
        }

        /// <summary>
        /// 机构/运营商 价格
        /// </summary>
        public double OrganPrice
        {
            get;
            set;
        }

        /// <summary>
        /// 库存
        /// </summary>
        public int StackNumber
        {
            get;
            set;
        }

        /// <summary>
        ///  规格
        /// </summary>
        public string Specifications
        {
            get;
            set;
        }

        /// <summary>
        ///  素材分类
        /// </summary>
        public string CategoryID
        {
            get;
            set;
        }

        ///// <summary>
        /////  分类标签
        ///// </summary>
        //public string TagID
        //{
        //    get;
        //    set;
        //}

        ///// <summary>
        /////  是否参与报价
        ///// </summary>
        //public string IsPrice
        //{
        //    get;
        //    set;
        //}

        /// <summary>
        ///  详情 数据库对应CLOB数据类型
        /// </summary>
        public string Details
        {
            get;
            set;
        }

        /// <summary>
        /// 简介
        /// </summary>
        public string Introl
        {
            get;
            set;
        }

        /// <summary>
        ///  是否删除
        /// </summary>
        [DBDefault]
        public string IsDelete
        {
            get;
            set;
        }

        /// <summary>
        ///  创建时间
        /// </summary>
        [DBDefault]
        public DateTime? CreateTime
        {
            get;
            set;
        }

        /// <summary>
        ///  主图
        /// </summary>
         [SolrField("ImagePath")]
        public string ImagePath
        {
            get;
            set;
        }

        /// <summary>
        ///  是否上下架,0下架,1上架
        /// </summary>
        [DBDefault]
        public string IsSell
        {
            get;
            set;
        }

        /// <summary>
        /// 供应商,填充organ表的guid
        /// </summary>
        public string Supplier { get; set; }

        /// <summary>
        ///  品牌
        /// </summary>
        public string BrandID { get; set; }

        /// <summary>
        ///  商品分类
        /// </summary>
        public string ProductCategoryID { get; set; }

        /// <summary>
        /// 最后操作时间
        /// </summary>
        [DBDefault]
        public DateTime? LastUpdateTime
        {
            get;
            set;
        }

    }
复制代码

 

  用法 

         gourpid 为分组  相同的则分成一组  type为他们之间的关系  如上 合并就是(ProductName:""  OR tagTile:"") AND (tagid:"" AND tagid:"") AND (tagid:"" OR tagid:"")

         orderbyd则是 如传入的是字典 key :createTime  value:desc  则是createtime降序排序  high为高亮显示字段  face为分组字段

        

       进行suggest查询还需要配置一些东西  

    

             key 为查询参数  product为核心

     

 

olrconfig配置
<!--自定义-->
  <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
   <lst name="spellchecker">
    <str name="name">default</str>
    <str name="field">suggestion</str>
    <str name="buildOnCommit">true</str>
    <str name="spellcheckIndexDir">spellchecker</str>
   </lst>
</searchComponent>
<searchComponent class="solr.SpellCheckComponent" name="suggest">    
        <lst name="spellchecker">  
            <str name="name">suggest</str>  
            <str name="classname">org.apache.solr.spelling.suggest.Suggester</str>  
            <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>  
            <str name="field">suggestion</str>  
            <!-- the indexed field to derive suggestions from -->  
            <float name="threshold">0.0001</float>  
            <str name="spellcheckIndexDir">spellchecker</str>  
            <str name="comparatorClass">freq</str>  
            <str name="buildOnOptimize">true</str>  
 
 
            <!--<str name="buildOnCommit">true</str>-->  
        </lst>  
    </searchComponent>  
<requestHandler class="org.apache.solr.handler.component.SearchHandler"  
                    name="/suggest">  
        <lst name="defaults">  
            <str name="spellcheck">true</str>  
            <str name="spellcheck.dictionary">suggest</str>  
            <str name="spellcheck.onlyMorePopular">true</str>  
            <str name="spellcheck.extendedResults">false</str>  
            <str name="spellcheck.count">10</str>  
            <str name="spellcheck.collate">true</str>  
        </lst>  
        <arr name="components">  
            <str>suggest</str>  
        </arr>  
    </requestHandler>  
     <queryConverter name="phraseQueryConverter" class="org.apache.solr.spelling.SpellingQueryConverter"/>  
 
schema配置 
<field name="suggestion"      type="text_ws"      indexed="true"      stored="true"      termVectors="true" multiValued="true" />  
这个字段name映射上面的suggetion
 
配置<copyField source="categoryMenuName" dest="suggestion" />   这个映射field  重新导入数据 重启tomcat
 
source为数据filed来源 支持写多个如再配置一个<copyField source="ProduectName" dest="suggestion" />
 
测试方式

      

 

我封装的ConfigHelp.SolrServerUrl地址:http://127.0.0.1:8080/solr/

 

posted @   意犹未尽  阅读(317)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示