gpt4 book ai didi

我网站搜索引擎的数据库表结构

转载 作者:搜寻专家 更新时间:2023-10-30 20:18:54 25 4
gpt4 key购买 nike

我正在尝试为我的网站制作一个搜索引擎。如何设计保存索引词列表的表。

之前我是这样想的:

表:tbl_indexedwords 有 2 列 iw_wordidiw_word

表:tbl_wordoccurrence 有 4 列 wo_occurrenceidwo_wordidwo_pageidwo_numberofoccurrences.

现在,如果用户在搜索框中输入两个以上的词,这种设计将无法正常工作。假设 foo bar。即使 foobar 都出现在表 tbl_indexedwords 中并且相应的详细信息在 tbl_wordoccurrence 中,我的搜索引擎脚本会将结果排名在它看到 foobar 的最大 wo_numberofoccurrences 的位置。它不会查看 foobar 是否相邻存在,因为没有单词出现顺序的列。我希望我在这里说的很清楚。

另一个想法可能是制作 3 列的表 tbl_wordoccurrence。忘记 wo_numberofoccurences 并使用唯一的 wo_occurrenceid 存储页面中的每个单词。现在,这将解决我的问题,因为我知道单词出现的顺序。如果某个单词的 wo_occurrenceid 是另一个单词的 wo_occurrenceid+1 或 wo_occurrenceid-1 那么,这两个并排出现。

这种设计的问题在于它会占用大量空间。我的网站有很多内容。我认为这种方法会使它变慢(虽然不确定)。还有其他设计可以帮助我吗?还是我必须和第二个一起去?我确信第一个不会起作用,所以放弃它。

最佳答案

如果您网站的内容在数据库中(我假设),如果您使用 FULLTEXT 索引,则甚至不需要创建单独的表。如果您使用的是 mySQL,那么它具有这样的功能,请参阅示例 herehere .如果您使用的是 MSSQL,它还有自己的 FULLTEXT 索引功能,如示例 herehere

如果您坚持要有一个单独的表来进行搜索,那么您很可能只需要一个表,例如:

Table  : tbl_wordsoccurrence
Fields : words_id, words
(and if you like you can include also number_of_occurences and page_id fields)

在上表中,您可以存储一个单词,如 programming 或短语,如 php programming

另一方面,如果您的网站是静态,这意味着内容未保存在数据库中,因此必须手动进行更改,而不是通过常规用户输入进行更改,那就是另一回事了。

关于我网站搜索引擎的数据库表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17057052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com