1

我正在为我的网站制作搜索表单/脚本。

首先,我网站内容中使用的每个单词都存储在一个名为 MYSQL 的表中words,它看起来像这样:

id |  word | title_count | content_count | article_count | photo_count | video_count |
---+-------+-------------+---------------+---------------+-------------+-------------+
 1 | hello |           3 |             1 |             0 |           1 |           0 |
 2 |  what |           1 |             4 |             1 |           0 |           0 |

wordid字段是唯一的,字段和title_count用于content_count存储单词在标题或主要内容中使用的次数。另一个_count字段只是说明该词在文章/照片/视频中使用了多少次。

我不确定所有这些计数字段是否对搜索功能有用,但我认为它可能会派上用场。

然后我有多个链接表到表的所有_count字段,words如下所示:

id |  word_id | 
---+----------+
43 |        2 |
 7 |        1 |
 7 |        2 |

这些表称为 : word_link_title, word_link_content, word_link_article,word_link_photoword_link_video。该id字段存储它链接到的文章/照片/视频的 ID,并word_id存储链接的单词的 ID。

现在我已经完成了所有这些设置,我有点卡住了。我真的不知道如何根据所有这些数字和研究术语来整理相关内容。

我计划做的是一个带有多个选项卡的搜索结果页面,其中一个会显示所有搜索结果,然后在其他选项卡中,它将在文章/照片/视频中分开。

我不知道我是否真的走在正确的道路上以使某些事情发挥作用。希望可以有人帮帮我..

4

1 回答 1

0

这完全取决于您想要什么,如果您想建议结果,您可能需要研究一些著名的单词搜索算法:Jaro-Winkler适用于短字,Levenshtein适用于长文本中的短字。您还可以similar_text在这些以前的算法之后使用 PHP 的函数进行更好的匹配。

我在这里(Jaro-Winkler)和这里发布了一堆搜索脚本,当我建立一个搜索引擎项目时,如果你想检查一下。

至于不同的计数,为什么不呢?您可以使用出现次数来支持某些关键字。但要小心将哪些插入到数据库中!您不希望像“the”或“it”这样的词或任何其他常见词破坏所有这些。

编辑:当然,这意味着搜索将在 PHP 中进行,并且需要从数据库中选择大量关键字(如果不是全部)会带来巨大的不便。在一个超过 3000 个单词的数据库上,我最终估计的最大搜索时间为 0.04 秒。所以看起来还可以=)

于 2012-07-04T01:22:05.180 回答