【问题标题】:Query for Searching Entered Text(keyword)搜索输入文本(关键字)的查询
【发布时间】:2011-12-28 20:05:44
【问题描述】:

我需要编写一个查询来在数据库中搜索字符串(关键字)。

当用户输入诸如“衣服”之类的文本时,查询应在整个数据库ProductName, ProductCode, SubCategoryName, etc 中搜索“衣服”关键字,并搜索接近/相似的文本。所以它应该显示所有与“衣服”相关的产品,类似于谷歌搜索引擎。

还包括拼写错误,例如“Clotts”、“Cloths”或“Clothos”,则应显示“Clothes”相关项目。

如果需要澄清,请发表评论。

我正在使用 VS2010 C#、MySql 5.5 数据库

【问题讨论】:

  • 我建议你先从简单的精确匹配开始,然后再继续。我们不会为您编写所有代码。代码很多。
  • 请推荐任何关键字。例如-“喜欢”匹配模式。但我也需要类似/接近的文字..?
  • 全文搜索可能是您想要的,这在 MyIsam 表上可用。否则,您甚至可能需要使用专门的搜索工具,例如 solr 或 lucene。
  • Google 在过去的十年里花费了数百名工程师来达到现在的水平。你不是从 Stack Overflow 的答案中得到的。
  • @Amadan : 抱歉误会.. :) 基本上大多数网站都使用类似的方法来搜索产品。所以这就是我的观点。

标签: c# mysql


【解决方案1】:

当用户输入诸如“衣服”之类的文本时,查询应在整个数据库中搜索“衣服”关键字

SELECT f1,f2,f3 FROM table1 
WHERE match (f1,f2,f3) AGAINST ('$search_term' IN NATURAL LANGUAGE MODE)  

请注意,在 MySQL 全文搜索中需要 MyISAM 表。
它也不能修复拼写错误。

还包括拼写错误,例如“Clotts”、“Cloths”或“Clothos”,那么它应该显示“Clothes”相关项目。

您正在寻找包含Levenshtein distance 的算法

有些人编写了 UDF,您可以使用 MySQL(在 Windows 上作为 dll)安装它,从而为您提供以下功能: 见:http://samjlevy.com/2011/03/mysql-levenshtein-and-damerau-levenshtein-udfs/
该链接甚至包括有关安装 UDF 的操作指南。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多