我正在尝试为我的网站制作搜索引擎。我应该如何设计保留索引词列表的表格。
之前我是这样想的:
表:tbl_indexedwords
有 2 列iw_wordid
和iw_word
.
表:tbl_wordoccurrence
有 4 列wo_occurrenceid
, wo_wordid
, wo_pageid
, wo_numberofoccurrences
.
现在,如果用户在搜索框中输入两个以上的词,这种设计将无法正常工作。假设foo bar
。即使foo
和bar
两者都出现在表中tbl_indexedwords
并且相应的详细信息在 中,我的搜索引擎脚本也会对结果进行排名,它在其中一个或tbl_wordoccurrence
中看到最大值。它不会看到和是否彼此相邻,因为没有单词出现顺序的列。我希望我清楚我在这里所说的话。wo_numberofoccurrences
foo
bar
foo
bar
另一个想法可能是制作tbl_wordoccurrence
3 列的表格。忘记wo_numberofoccurences
并使用 unique 存储页面中的每个单词wo_occurrenceid
。现在,这将解决我的问题,因为我知道单词的出现顺序。如果 wo_occurrenceid
某个词是某个词的wo_occurrenceid
+1 或wo_occurrenceid
-1,那么这两个词并排出现。
这种设计的问题是它会占用大量空间。我的网站有很多内容。我认为这种方法会使其变慢(但不确定)。还有其他设计可以帮助我吗?还是我必须选择第二个?我敢肯定第一个是行不通的,所以丢弃它。