【问题标题】:C# LINQ SEO General programming question, how to correctly get the results of a location?C# LINQ SEO 通用编程问题,如何正确获取某个位置的结果?
【发布时间】:2010-09-23 20:10:21
【问题描述】:

对不起标题:)

这是我的基本问题,我尝试对某个位置实施 SEO 类型查询。

这是我的例子

  • /利兹
  • /Leeds_England
  • /Hampshire_England
  • /England_Leeds
  • /Europe_England

我正在尝试获取位置,现在我正在拆分“_”,然后通过我的列表对每个部分进行 LINQ 查找。 位置有

城市 省 地区 国家 大陆

如果我找到一个计数更大的变量,我将变量设置为“cityFound”并将结果附加到一系列位置。

然后,我再次使用 LINQ 对拆分的这些结果进行检查,以查看我得到了什么,并尝试确定每个拆分部分是否位于同一位置。

现在我觉得我做错了,但我想不出“很好”的方法。我想我可以创建一个递归方法,或者我完全看错了。

你们将如何解决这个问题?伪代码很好,这是我被难住的逻辑!

干杯,萨基。

【问题讨论】:

  • 恐怕我觉得你的问题很难理解。我可以看到这些是输入的例子——你有什么已知信息? “如果我找到一个数量更多的人”是什么意思?一个什么,以及更多的什么?你想得到什么输出?
  • (当我能理解你的问题时,我会尽力解决它......我喜欢这种事情。)

标签: c# linq seo


【解决方案1】:

我对无序拆分的担忧是可能会出现重复。请原谅我洋基对欧洲地理的无知,把我比较熟悉的美国地理送给你。

拉斯维加斯是一个不错的起点。人们会想到拉斯维加斯,那个热带沙漠绿洲想从你身上吸钱。当然,人们不会想到新墨西哥州的拉斯维加斯——只是内华达州的拉斯维加斯。亚利桑那州凤凰城和纽约凤凰城也是如此。你到了技术可行性需要成为等式的一部分的地步。相信我,我和我们的搜索引擎人员也有同样的争论。我感觉到你的痛苦。

【讨论】:

    【解决方案2】:

    除了逻辑,我确实有一个建议。在构建基于位置的 URL 时,我一直发现使用最大的地理位置和最小的地理位置更容易。这是一个合乎逻辑的假设,即每个额外的“改进”都比父级更有针对性。定义一个严格的模式并坚持下去,因为它会更容易维护。我注意到你的例子并不总是符合你的模式,特别是最后一个在城市之前有大陆的例子。

    【讨论】:

      【解决方案3】:

      是的,这就是问题所在,我知道我想从他们那里得到什么。但根据我们的“SEO”,最好允许多种类型。 (不要让我开始)。

      您会说最好先做最大...如果我找到结果,请将其重新插入方法中。可能值得一试。

      我只是想确保我已经尝试了每个参数拆分,因为我不知道顺序。

      【讨论】:

        【解决方案4】:

        我会这样做。在最坏的情况下,它仍然会花费线性时间,但在常规情况下会平滑到恒定时间。

        如果您不重用该对象,那么此实现仍使您能够设置覆盖以处理 Las VegasPhoenix

        它将允许您以任何位置属性的顺序进行查询。 (请原谅我的任何语法错误 - 我有一段时间没有编写 C#。)

        class LocationResolver {
            private IEnumerable<Location> locations;
            private Map<String, Location> memory = new Map<String, Location>();
        
            public LocationResolver(IEnumerable<Location> locs) {
                locations = locs;
                //
                // Add any locations that need disambiguation
                //
                memory["/Las Vegas"] = FromUrl("/Las Vegas_Nevada");
                memory["/Phoenix"] = FromUrl("/Phoenix_Arizona");
            }
        
            public Location Resolve(string url) {
                Location result;
                if (memory.TryGet(url, out result)) {
                    result = FindWithParts(url.Substring(1).Split('_'));
                    memory[url] = result;
                }
                return result;
            }
        
            private Location FindWithParts(string[] parts) {
                string[] locParts = new string[5];
                for (Location l in locations) {
                    locParts[0] = l.City;
                    locParts[1] = l.Province;
                    locParts[2] = l.Region;
                    locParts[3] = l.Country;
                    locParts[4] = l.Continent;
                    bool found = true;
                    for (int i = 0; i < parts.Length && found; i++)
                        found = Array.IndexOf(locParts, parts[i]) >= 0;
                    }
                    if (found) {
                        return l;
                    }
                }
                return null;
            }
        }
        

        【讨论】:

          【解决方案5】:

          抱歉忘了关闭这个,我所做的是有一些变量。

          城市文本 省文等

          对于 _ 的每个拆分,我查找是否可以找到位置,如果可以设置该值。

          CityText = 利兹 ProvinceText = 西约克郡

          然后我浏览了结果并在哪里查找结果。

          所有地点 == 利兹

          以及所有地点 == 西约克郡

          和 x 和 x

          然后我在底部的位置满足位置的所有部分。

          为代码干杯!

          萨基。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-11-09
            • 2020-09-22
            • 2019-04-15
            • 1970-01-01
            • 1970-01-01
            • 2023-03-29
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多