【发布时间】:2012-05-01 11:19:07
【问题描述】:
我有两个表:Sentence 和 WordIndex。
句子:
身份证,
文字,
字号
词索引:
身份证,
词,
句号
场景:
示例:
句子表
1、《我跳过了狗》,[1,2,3,4,5]
2、《我绊倒了猫》,[6,7,8,9,10]
单词索引表
1,“我”,1
2、“跳”、1
3、“结束”、1
4、“之”、1
5、《狗》、1
6、“我”、2
7、“绊倒”、2
8、“结束”、2
9、“的”、2
10,“猫”,2
我想查找仅包含以下任何单词的所有句子:“i”、“jumped”、“over”、“the”、“dog”、“cat”。
如果我只是在索引中搜索这些词,将返回句子 #2,它不应该包含在内。
我的想法是在 WordIndex 中找到与目标词不匹配的行。该结果包含我不想要的所有 SentenceId,而我不想要的所有 SentenceId。然后,获取不在该结果中的句子的 ID。
问题是,我对 MySQL 很陌生,有两个问题。
1)这似乎是获得预期结果的最有效方法吗?我需要它来很好地扩展(数百万个索引和数千个目标/允许的单词)。
2) 我如何将该解决方案转换为 SQL 语句?
【问题讨论】:
-
你应该看看full text search。
-
感谢您的想法。我通读了各种全文搜索选项。它看起来不像我的场景,因为我不是在寻找某些在行中存在或不存在的单词。我正在寻找只包含单词数组中的单词的行,但这些单词都不是特别需要的。
-
对于高度相关的数据,考虑mongodb
标签: mysql