Database 制作一个像谷歌这样的数据库搜索引擎

Database 制作一个像谷歌这样的数据库搜索引擎,database,search-engine,Database,Search Engine,我刚开始创建网站。我正在创建一个电话目录搜索引擎。(使用PostgreSql、CGI脚本)。我的数据库有名称、电话号码、城市、州、地址 到目前为止,我已经创建了一个类似“google”的搜索字段,我可以在其中提供上述任何数据库条目和搜索。但现在我想提供类似“name+city+…”的搜索字段,以便最小化输出条目。您的意思是要搜索所有字段吗?然后: SELECT * FROM table_name WHERE Name LIKE '%query%' OR Tel.No LIKE '%query%

我刚开始创建网站。我正在创建一个电话目录搜索引擎。(使用PostgreSql、CGI脚本)。我的数据库有名称、电话号码、城市、州、地址


到目前为止,我已经创建了一个类似“google”的搜索字段,我可以在其中提供上述任何数据库条目和搜索。但现在我想提供类似“name+city+…”的搜索字段,以便最小化输出条目。

您的意思是要搜索所有字段吗?然后:

SELECT *
FROM table_name
WHERE 
Name LIKE '%query%'
OR Tel.No LIKE '%query%'
OR City LIKE '%query%'
OR State LIKE '%query%'
OR Address LIKE '%query%'

您的意思是要搜索所有字段吗?然后:

SELECT *
FROM table_name
WHERE 
Name LIKE '%query%'
OR Tel.No LIKE '%query%'
OR City LIKE '%query%'
OR State LIKE '%query%'
OR Address LIKE '%query%'

此外,您可以使用PostgreSQL搜索单个索引中的任何或所有字段。

此外,您可以使用PostgreSQL搜索单个索引中的任何或所有字段。

我不知道您正在使用的编程语言,但我可以告诉您可能使用的算法。 它实际上是一个简单的,包含许多(如果条件)

如以下所示:

如果(提供名称)=>带来匹配结果并将其存储在Set1中 如果(提供城市)=>过滤Set1中的结果,仅获取匹配结果并将其存储在S2中 如果(提供地址)=>在S2中过滤结果,只获取匹配的结果并将其存储在S3中…等等

通过这种方式,你可以将整组电话记录一次又一次地过滤掉,直到完全过滤掉为止,无论用户输入什么,都会给他带来一些结果

我的意思是,如果你输入一个字段,你会得到很多结果,如果你输入两个字段,你会得到更少的结果,因为结果会被过滤两次,如果他输入三个字段,结果会被过滤三次,依此类推

简言之。。。只需使用过滤
很抱歉回答得太长了

我不知道您使用的编程语言,但我可以告诉您可能使用的算法。 它实际上是一个简单的,包含许多(如果条件)

如以下所示:

如果(提供名称)=>带来匹配结果并将其存储在Set1中 如果(提供城市)=>过滤Set1中的结果,仅获取匹配结果并将其存储在S2中 如果(提供地址)=>在S2中过滤结果,只获取匹配的结果并将其存储在S3中…等等

通过这种方式,你可以将整组电话记录一次又一次地过滤掉,直到完全过滤掉为止,无论用户输入什么,都会给他带来一些结果

我的意思是,如果你输入一个字段,你会得到很多结果,如果你输入两个字段,你会得到更少的结果,因为结果会被过滤两次,如果他输入三个字段,结果会被过滤三次,依此类推

简言之。。。只需使用过滤
很抱歉回答太长

您可以创建一个函数,在该函数中,在检查用户已传递哪些字段以执行搜索查询后,可以动态创建where子句。

您可以创建一个函数,在该函数中,在检查用户已传递哪些字段以执行搜索查询后,可以动态创建where子句搜索查询。

但他可以给出任何命令,如“姓名+州+城市”或“城市+州”或“电话号码+城市”……但他可以给出任何命令,如“姓名+州+城市”或“城市+州”或“电话号码+城市”……是的,实际上我使用了它,但在搜索中如果我给出“姓名+城市”。它如何将姓名和城市分开并搜索我的$Query=“从telu dir中选择名称,telno,其中名称类似\'\%$FORM{'name'}\%\'或城市类似\'\%$FORM{'name'}\%\'或状态类似\'\%$FORM{'name'}\\\\\\'或telno类似\'%$FORM{'name'}\\\\”;“my$Query=”选择名称,telno from telu dir,其中名称类似\'\%$FORM{'name'}\\\\\\\\\\'或城市类似\'\%$FORM{'name'}\\\\\\\\'或状态类似\'\%$FORM{'name'}\\\\\\\\\\”;“是的,实际上我用过它,但在搜索中如果我给了“name+city”,它怎么能把name和city分开,然后从tel\u dir中搜索它们呢;“my$Query=”选择名称,telno from telu dir,其中名称类似\'\%$FORM{'name'}\\\\\\\\\\'或城市类似\'\%$FORM{'name'}\\\\\\\\'或状态类似\'\%$FORM{'name'}\\\\\\\\\\”;“您如何知道搜索字符串是name+city还是city+name?似乎您必须有一种方法让用户识别她键入的字符串类型。您如何知道搜索字符串是name+city还是city+name?似乎您必须有一种方法让用户识别她键入的字符串类型。”.