首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >搜索引擎、asp.net mvc、领域驱动设计

搜索引擎、asp.net mvc、领域驱动设计
EN

Stack Overflow用户
提问于 2009-03-27 08:22:46
回答 2查看 1.2K关注 0票数 1

要开发一个搜索引擎。

我想知道我的DDD应该是什么样子。应该实现对记录进行排序,但我不希望我的视图知道我的数据库结构(按哪些列进行排序)。据我所知,排序信息应该来自基础架构层,来自存储库实现,所以必须有一个灵活的域。

它应该是什么样子的?

我希望它是强类型的。

有什么最佳实践吗?

对架构的建议?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-27 09:47:57

如果你要开发一个搜索引擎,你将不得不非常快地考虑可伸缩性。在与搜索相关的环境中排序是一个常见的问题。你应该看看Google的搜索实现!如何排序应该取决于ranking algorithm。以领域为中心的排名算法设计不应该像服务方法那样与排名如此不同!

你使用哪种语言是你的选择。如果您选择C/C++ Message Passing Interface (MPI)进行分布式计算。如果你使用Java,可以看看JMSGridGain (GridGain实现了Googles MapReduce)。

另一个问题是,如何存储数据(分布式、快速、容错)!对于Java,可以看看Project Voldemord (这是你可以免费获得的最好的系统之一。

有关谷歌架构的更多信息,请阅读the high scalability website上的更多内容。

关于DDD的问题,请看埃里克·埃文斯自己的主页dddcommunity.org ;)他写了一本非常好的书Domain-Driven Design。DDD很好,因为它保证了域的完整性和完整性。

一个简单的模型可能是:

代码语言:javascript
复制
page ( URL url, BigInt rank, List<String> keywords, 
       List<URL> links, List<URL> outLinks, Content ref) 


content ( GzippedBytes[] content )

如果一个新的节点被添加到系统中,它应该对"setLinks“之类的东西做出反应,这样它就可以自己获得它的pagerank。

客户很简单,他只做一个按PageRank排序的搜索(关键字)。

下面是一个用Java语言编写的服务 example of a pagerank implementation

票数 1
EN

Stack Overflow用户

发布于 2013-06-04 12:45:29

这是一个自定义搜索引擎的基础知识,它解析MVC视图目录,读取文件,并将提供的文本与正则表达式进行匹配。我的网站返回搜索结果的html链接。这段代码将导致创建一个列表。

代码语言:javascript
复制
List<string> results = new List<string>();
DirectoryInfo di = new DirectoryInfo  (System.Configuration.ConfigurationManager.AppSettings["PathToSearchableViews"]);
//get all view directories except the shared
foreach (DirectoryInfo d in di.GetDirectories().Where(d=>d.Name != "Shared"))
{
    //get all the .cshtml files
    foreach (FileInfo fi in d.GetFiles().Where(e=>e.Extension  == ".cshtml"))
    {
    //check if cshtml file and exclude partial pages
    if (fi.Name.Substring(0,1) != "_")
    {
        MatchCollection matches;
        bool foundMatch = false;
        int matchCount = 0;
        using (StreamReader sr = new StreamReader(fi.FullName))
        {
            string file = sr.ReadToEnd();
            foreach (string word in terms)
            {
                Regex exp = new Regex("(?i)" + word.Trim() + "(?-i)");
                matches = exp.Matches(file);
                if (matches.Count > 0)
                {
                    foundMatch = true;
                    matchCount = matches.Count;
                }
            }
         //check match count and create links
         //
         //
         }
      }
      }
  }
  return results;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/688908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档