【问题标题】:How to use words in text to search MySQL table?如何使用文本中的单词来搜索 MySQL 表?
【发布时间】:2013-11-18 12:24:16
【问题描述】:

我正在创建一个应用程序,用户可以在其中保存单独的笔记。在笔记中,用户可以识别笔记的关键词。如果在另一个笔记中提到了该词,我希望应用程序创建一个指向该词是关键字的笔记的链接。

例子:

注释 1:“这是带有 [keyword] 的注释”(关键字用括号标识) 注释2:“这是一个不同的注释,但提到了关键字”

现在我想在注释 2 中的“关键字”一词处创建一个链接,指向注释 1。

当输入关键字时,它会保存在关键字表中并链接到相应的注释ID。当用户添加注释或加载现有注释时,我不知道如何搜索该关键字表。对 SQL 查询使用所有单词似乎没有意义,因为这可能会创建很多很多查询。

你有什么想法?

【问题讨论】:

  • 为什么不尝试将所有关键字加载到具有 note_id => 关键字或关键字 => note_ids 的二维 PHP 数组中,并使用数组搜索进行关键字搜索?顺便说一句,只是想知道链接到具有关键字的注释背后的逻辑是什么。因为我认为一个关键字会有很多注释,反之亦然。那么这意味着您的链接将加载笔记列表?
  • 谢谢,这可能是一个解决方案!逻辑是关键字是唯一的单词,因此每个关键字只会链接到一个特定的注释。
  • 我正在尝试实施此解决方案,但我遇到了问题。由于我使用 javascript,因此我使用 jQuery post 从数据库中获取关键字。但是,这是异步的,因此我无法将此请求的结果保存在一个方便的数组中,以便在加载页面时使用......
  • 是不是你说的,因为Ajax调用是异步的,所以无法获取数据保存在数组中,无法访问数据?也许您可以尝试“async:false”,以便其他所有内容都等到此调用完成。

标签: javascript php mysql


【解决方案1】:

您要求的功能可以实现,但问题是密集处理。我建议,首先你应该限制一个注释的最大关键字数(比如 3 或 4 个)。然后对于关键字映射,不是在注释 2 中搜索整个文本(即用户正在添加的新注释),而是首先允许用户在注释 2 中定义关键字。 一旦注释2中的关键字由用户定义,这些关键字可以在提交时与数据库关键字列表进行比较,并可以制作所需的链接。

在接受之前,询问用户是否要插入这些链接(他可能会获得 20 个链接,但他只想从中选择 3 个或 4 个。您还可以限制链接的数量随附的)。

假设,如果没有找到匹配项或用户对链接不满意,则给出重新定义关键字的选项并再次比较。

这种方法将降低复杂性并且易于管理。它也应该是用户友好的。你的想法有很大的头脑风暴空间。可能这不是您的目标,但是当您提出建议时,我已经给出了我的建议。 :)

【讨论】:

  • 有道理,但我更喜欢用户不必在注释2中定义关键字referers。应用程序背后的想法是“你有很多注释,让我帮你理解关系通过查找笔记中某些单词的定义位置来在笔记之间查找”(假设用户在他定义该关键字的笔记中使用了关键字)。
  • 好的。一件事在我脑海中浮现。有很多像这样不重要的单词,is、the、a、an、you 等。因此,您可以提供一个 xml 以及包含不重要单词列表的网页。然后尝试使用javascript捕获每个单词(即用空格分隔)并与xml中的列表进行比较并列出所有其他单词。因此,您可以在客户端消除不重要的单词。然后在提交时,您必须只比较重要的单词。您可以定期将单词添加到不重要的列表中。我只是想减少服务器端处理。你怎么看?
猜你喜欢
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 2015-12-07
相关资源
最近更新 更多