我必须实施特定的解决方案。
简单地说,它是某种知识库。这是关键字和信息(基本上是某种知识库)的存储。
任何数量的关键字可以连接到“信息”,而相同的单词可以连接到不同的信息。示例:
+-------------------------+-------+
| Key_words | Data |
+-------------------------+-------+
| word1 word2 word5 | data1 |
| word3 word2 word4 word6 | data2 |
| word3 word7 word8 | data3 |
+-------------------------+-------+
单词可能会更改,数据也会更改。 我不确定如何“以一种好的方式”进行此操作。
会的
+---------+--------------------+---------------+
| Storage |
+---------+--------------------+---------------+
| id(int) | key_words(varchar) | data(varchar) |
+---------+--------------------+---------------+
这将需要“喜欢”查询来搜索数据或进行某些全文搜索(elasticsearch / lucene /数据库提供了全文搜索),例如
select * from Storage where Key_words like '%word1%' and Key_words like '%word3%'
另一个想法是以多对多关系存储数据:
+---------+---------------+
| Datum |
+---------+---------------+
| id(int) | data(varchar) |
+---------+---------------+
| 1 | data1 |
+---------+---------------+
+---------+------------------+
| Keywords |
+---------+------------------+
| id(int) | keyword(varchar) |
+---------+------------------+
| 1 | word1 |
| 2 | word2 |
| ... | ... |
| 5 | word5 |
| ... | ... |
+---------+------------------+
+---------+-----------------+--------------+
| KwToData |
+---------+-----------------+--------------+
| id(int) | keyword_id(int) | data_id(int) |
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 2 | 2 |
| ... | ... | |
| 5 | 5 | 1 |
| ... | ... | |
+---------+-----------------+--------------+
但是在这种情况下,我将不得不通过嵌套搜索来搜索文章(关键字数组+相关数据),并且更新/删除关键字会有些棘手(删除-从kw_to_data中删除记录,更新-搜索关键字(如果存在)-将记录添加到kw_to_data,如果不存在-还将关键字添加到“关键字”表)
有人做了类似的事情吗?如果是的话,从您的经验来看,做到这一点的最佳方法是什么?