存储和搜索类似的短语

时间:2012-08-28 00:41:12

标签: mysql database database-normalization

假设我想在我的数据库中存储项目,例如“访问西班牙”。但是,我将允许用户提交,我想跟踪所有希望访问西班牙的用户,但我希望他们能够输入“Visit Spain”以及“Go to西班牙“,”见西班牙“,或”西班牙之旅“。 我正在寻找一种有效的方法来做到这一点。目前我的想法让我沿着这些方向(简化):

  • 名词
    1. UNIQUEID
    2. 名词
    3. 动词[fk]
  • 动词
    1. UNIQUEID
    2. 动词
  • 同义词
    1. UNIQUEID
    2. 动词[fk]
    3. 同义词

我是不是基地了,还是这是最好的方式呢?我正在寻找性能和易维护性......

1 个答案:

答案 0 :(得分:0)

你应该研究一些简单的自然语言处理(NLP)。

理想情况下,您需要规范化输入,以便搜索具有相同规范化值的用户。

  1. 首先标记输入,分隔单词。 “访问西班牙”将成为(“访问”,“西班牙”)和“
  2. 寻找具有等价性的单个单词。例如,您可以忽略许多事情的情况。
  3. 使用表格查找查找更高级的单字等价,例如“Visit”=> “Tour”,“See”=> “游览”。使用此(“访问”,“西班牙”)和(“见”,“西班牙”)将被翻译为(“游览”,“西班牙”)
  4. 寻找短语等价。例如“转到”=> “访问”。这会使(“Go”,“to”,“Spain”)成为(“Tour”,“Spain”)。
  5. 应用模式匹配。例如(“Tour”X“和”Y“=> (“Tour”X),(“Tour”Y)可以成为两个独立的项目(“Tour”,“Spain”)和(“Tour”,“France”)。
  6. 当您应用了所有转换后,请存储生成的规范化项目。
  7. 您的工作是定义翻译类,找到这些翻译的许多实例,然后将它们应用到您的输入中。

    获得规范化项目后,您可以搜索具有相同规范化项目的其他用户。

相关问题