zoukankan      html  css  js  c++  java
  • 让.Text的搜索引擎支持二级域名

    最近在做.Text Blog的Wap版,因为手机上输入比电脑上更难,所以,如果用户手动输入地址访问Blog的话,会对没有意义又繁长的URL非常反感,所以,花了点时间做了.Text对二级域名的支持并对其地址分析功能做了些优化,可是做好后发现,.Text的搜索引擎并不支持这种域名方式,没办法,只好对它的搜索引索又动了点小手术。(博客园现在有点慢啊)

    1、对Web.config的修改:

        <SearchConfiguration type="Dottext.Search.SearchConfiguration, Dottext.Search" urlFormat="http://{1}{0}/Blog/{2}/{3}.aspx"
            virtualPath
    ="~/SearchIndex" physicalPath="D:\Code\MSS1\Blog\DotTextWeb\SearchIndex" domains=".tzl.com"
            pageSize
    ="20" />

    其中http://{1}{0}/Blog/{2}/{3}.aspx中的Blog是你的应用程序名,比如你的程序在www.blog.com/blog下,注意domains不要加上www之类的

    2、将Dottext.Search.EntryData类的CreateDoc(IDataReader reader)方法改成这样

            private Document CreateDoc(IDataReader reader)
            
    {
                
    //Null values are not allowed in the index
                
                Document doc 
    = new Document();
                
    try
                
    {
                    doc.Add(Field.Text(SearchConfiguration.Author,(
    string)reader["Author"]));

                    doc.Add(Field.Text(SearchConfiguration.Title,(
    string)reader["Title"]));

                    
    string body = (string)reader["Text"];
                    doc.Add(Field.UnIndexed(SearchConfiguration.Body,body));
                    doc.Add(Field.Text(SearchConfiguration.Link,
    string.Join(" ",GetLinks(body))));
                    doc.Add(Field.Text(SearchConfiguration.RawPost,regexStripHTML.Replace(body,
    string.Empty)));

                    DateTime dateCreated 
    = (DateTime)reader["DateAdded"];
                    doc.Add(Field.UnIndexed(SearchConfiguration.DateCreated,dateCreated.ToLongDateString()));

                    
    string app = (string)reader["Application"];
                    doc.Add(Field.Text(SearchConfiguration.Blog,app));

                    
    //Do we really need this?
                    
    //doc.Add(Field.Text(SearchConfiguration.Description,reader["Description"].ToString()));

                    
    string host = (string)reader["Host"];
                    doc.Add(Field.Text(SearchConfiguration.Domain,host));


                    
    int posttype = (int)reader["PostType"];        
                    doc.Add(Field.UnIndexed(SearchConfiguration.PostType,posttype.ToString()));

                    
    string permaLink  = null;
                    SearchConfiguration searchConfig 
    = SearchConfiguration.Instance();
                    
    if((PostType)posttype == PostType.BlogPost)
                    
    {
                        
    //permaLink = string.Format(SearchConfiguration.Instance().UrlFormat,host,app, "archive/" + dateCreated.ToString("yyyy'/'MM'/'dd"),reader["EntryID"]);
                        permaLink = string.Format(searchConfig.UrlFormat,searchConfig.Domains,app, "archive/" + dateCreated.ToString("yyyy'/'MM'/'dd"),reader["EntryID"]);
                    }

                    
    else if((PostType)posttype == PostType.Comment)
                    
    {
                        permaLink 
    =    reader["SourceUrl"].ToString()+"#"+reader["EntryID"].ToString();
                    }

                    
    else
                    
    {
                        
    //permaLink = string.Format(SearchConfiguration.Instance().UrlFormat,host,app, "articles",reader["EntryID"]);
                        permaLink = string.Format(searchConfig.UrlFormat,searchConfig.Domains,app, "articles",reader["EntryID"]);
                    }


                    
    int feedbackCount = (int)reader["FeedbackCount"];
                    
    int webviewCount = (int)reader["WebViewCount"];

                    
    int boost = weighter.Calculate(body.Length,feedbackCount,webviewCount,dateCreated,(PostType)posttype);
                    doc.SetBoost(boost);

                    doc.Add(Field.UnIndexed(SearchConfiguration.BoostFactor,boost.ToString()));

                    doc.Add(Field.UnIndexed(SearchConfiguration.PermaLink,permaLink));
                }

                
    catch(Exception e)
                
    {
                    Dottext.Framework.Logger.LogManager.Log(
    "CreateDoc Fail","EntryID is "+reader["EntryID"]);
                }

                
                
    return doc;
            }
  • 相关阅读:
    如何获取QQ的clientkey
    自动输入QQ密码
    Ext Tree 操作类
    QQ消息记录文件压缩方法
    见过最恶心的代码,发泄一下。。。
    今天尝试获取QQ的clientkey未果,做个记号
    用c# 调用并调试c++的代码
    托盘管理 隐藏/显示/单击/右键/双击/改变位置
    在XP下是可以查看进程命令行参数的
    充分利用你的“二脑”
  • 原文地址:https://www.cnblogs.com/think/p/262088.html
Copyright © 2011-2022 走看看