【问题标题】:Is there a way to search sensory data stored in MySQL?有没有办法搜索存储在 MySQL 中的感官数据?
【发布时间】:2016-09-05 20:44:13
【问题描述】:

我有一个表格,其中有多个包含温度等感官数据的列。我想问是否存在使用输入用户查询的搜索栏搜索表中可用数据的现有方法(编辑:这基本上意味着用户可以输入任何文本查询,但是如何将查询翻译成在充满感官数据的表格中有用吗?)我已经完成了我的研究,但我找不到任何像样的结果。下面是对表格的描述:

如您所见,此表主要有数值,除了列名以及Client和datetime列。

【问题讨论】:

  • 请解释一下“使用搜索栏”是什么意思?当然有办法搜索任何东西,但一切都取决于你到底想做什么。
  • 编辑。谢谢你的建议。
  • 完成。我希望这能更好地解释它。

标签: mysql search search-engine


【解决方案1】:

是的,有多种方法。 您可以提示用户指定不同的搜索条件,例如:

  • 日期范围
  • 客户
  • 温度范围
  • 状态

还有更多,通过这种方式,您可以过滤数据以仅获取您要查找的内容;但从我对您的问题的理解是,您想要一个带有单个输入的单个搜索框来搜索多个字段,如果是这种情况,您将需要过滤您感兴趣的每个字段,使用OR 运算符和一些数据类型转换。

--your parameters and temporary variables to perform conversion
DECLARE @criteria VARCHAR(20) = '55';
DECLARE @criteria_temp INT = 0;

--try conversions here
BEGIN TRY
SET @criteria_temp = CONVERT(int,@criteria,0);
END TRY
BEGIN CATCH
SET @criteria_temp = 0;
END CATCH

--your query
SELECT * FROM MyTable
WHERE
Client LIKE '%'+@criteria+'%' OR
TEMP = @criteria_temp

你可以看到这个查询将检索到所有Client包含'55'的记录和TEMP等于55的记录。

如果用户输入字符串“test”作为条件,@criteria_temp 的转换将失败,在这种情况下,您可以使用默认值,例如 0,查询将返回客户端包含“test”的所有记录并记录 temp 等于 0。

基于此,您可以在查询中为不同的数据类型和搜索条件添加更多变量。

【讨论】:

  • 抱歉耽搁了。我想定义某些参数应该是一个更好的主意,因为它会产生准确的结果并更容易与用户交互。所以,如果我过滤搜索,那么它完全取决于我想如何限制布局对吗?但是如果用户不想为他的查询指定一个特定的日期,那么这将成倍地增加搜索空间,这意味着更慢的响应时间,有什么办法解决这个问题? P.S:那是 MySQL 编码吗?
  • 这取决于场景,像谷歌这样的地方受益于单个搜索字段,因为每个用户输入的条件可能非常不同,即单词、短语、引号、序列号、模型、属性、网站名称、等等,如果用户需要更具体,他们可以使用高级搜索向搜索添加特殊条件。在您的情况下,您可能会受益于拥有多个搜索字段,或者至少让用户在他/她想要搜索的希望字段中进行选择,可以在此处看到一个示例vxsearch.com/screenshots/vxsearch_search_files.jpg
  • 提供的代码实际上来自 SQL Server,但我检查了语法并在 MySQL 中工作方式相同
猜你喜欢
  • 2011-05-19
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 2021-08-20
  • 2011-05-19
  • 2017-04-02
  • 1970-01-01
  • 2018-05-24
相关资源
最近更新 更多