在内容中搜索并跳过mvc中的html元素

时间:2014-07-24 17:35:50

标签: asp.net-mvc asp.net-mvc-4

我想搜索内容,但我不想让错误结果。 假设用户搜索' br'我不想在输出结果中看到< br>或者< P>和其他html元素

1 个答案:

答案 0 :(得分:0)

简单地说,您必须在搜索之前剥离标记。但是,这意味着无法直接查询数据库。相反,您必须先拉出所有对象,然后在内存中查询该集合。

如果你要做很多这样的事情或拥有大量的对象(在初始查询中拉出所有对象会导致性能下降),那么你应该研究一个真正的搜索解决方案。我一直在和Elasticsearch合作,在我看来这似乎是最好的。它易于设置,易于使用,并通过nuget包NEST进行第三方.NET集成。

使用真正的搜索解决方案,您可以索引内容字段,删除HTML,然后在索引上而不是直接在数据库上运行查询。您还将获得强大的高级功能,例如分面,这很难或不可能直接使用Entity Framework。

或者,如果你不能全力以赴地进行搜索,并且在前面查询所有内容是不可接受的(实际上它几乎总是),那么你唯一的另一个选择是创建另一个每个HTML内容属性的伴随字段,并始终在那里保存HTML文本的剥离副本。然后,将该字段用于搜索查询。