c# - 网站内容的搜索方法

标签 c# asp.net mysql search indexing

我一直在寻找一种在我的网站上实现的搜索方法,但是我无法确定最佳方法。可搜索的内容放置在六个不同的表中。一张包含“标签”的表,一张包含“类别”的表,然后是四个表,每个表包含一个标题列。

我一直在研究纯sql搜索,但它似乎有点慢(我不能使用全文搜索索引),而且我希望搜索找到与搜索单词相似的单词的结果,而不仅仅是“总匹配数”例如搜索拼写错误的单词“Memhis”也应该返回包含“Memphis”的内容。

您将采用哪种方法以及哪些算法/数据结构适合此目的?

最佳答案

如果您不是严格追求嵌入式解决方案,我建议 Solr 。简单地说,它通过 HTTP 公开 Lucene。我们一开始使用的是 Lucene.Net,但没过多久我们就切换到了 Solr。它是用 java 编写的,但您不需要编写任何 java 代码。

可以使用DIH (我没用过)或者Solrnet (我们正在使用的一个)与 c#/.Net 一起完成工作。

关于索引(重新)生成;它可以像每天重新生成一次或两次索引一样简单,也可以与触发器等结合起来更新单个条目,或两者的组合。

这可能是一个陡峭的学习曲线,但我想说,如果您能抽出一些时间,那么这是非常值得的。

关于c# - 网站内容的搜索方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5753490/

相关文章:

c# - 使用 ASP.NET 清除缓存的最有效方法

c# - 将 JSON 对象和对象列表传递给 ASP.Net Controller

sql - 检索每个组中的最后一条记录-MySQL

PHP 在下一个按钮上逐行获取结果

asp.net - 以编程方式滚动到 anchor 标记

mysql - nitrous.io 和 mysql 工作台

c# - 类方法内的 `this` 是否引用被调用或默认实例?

c# - "Possible multiple enumeration of IEnumerable"与 "Parameter can be declared with base type"

c# - 使用 Token 获取信息。 OAuth

c# - 如何将 Swagger 设置为默认起始页?