在不同的表中创建搜索引擎

时间:2012-04-10 06:04:17

标签: php mysql

您建议我使用哪种搜索引擎搜索不同的表格?

每个表都不同,列不同,行数不同。

3 个答案:

答案 0 :(得分:0)

在相应的表上创建触发器,以将不同表中的内容提取到单个表。在该表上应用全文搜索索引。

答案 1 :(得分:0)

创建您的函数,该函数将动态输入列名和表名。为了搜索目的,您必须知道哪个列与哪个表相关,然后始终将这2个参数1)table_name 2)column_names数组传递给它。使用这些参数适合的条件创建sql查询,并动态开发查询。然后查询将返回结果。

答案 2 :(得分:0)

在这种情况下,请确保您已考虑FULL-TEXT索引机制。 FULL-TEXTMyISAM类型支持ENGINE索引。

使用MATCH()... AGAINST语法执行

Full-text搜索。 MATCH()采用逗号分隔的列表来命名要搜索的列。 AGAINST需要一个字符串来搜索,一个可选的修饰符指示要执行的搜索类型。搜索字符串必须是文字字符串,而不是变量或列名。有三种类型的全文搜索:

  • 自然语言搜索将搜索字符串解释为中的短语 自然人类语言(自由文本中的短语)。没有什么特别的 运营商。禁用词列表适用。另外,这些话 在50%或更多行中存在被认为是常见的而不是 匹配。

    如果是IN NATURAL,全文搜索是自然语言搜索 给出了LANGUAGE MODE修饰符,或者没有给出修饰符。

  • 布尔搜索使用特殊查询语言的规则来解释搜索字符串。该字符串包含要搜索的单词。 它还可以包含指定要求的运算符a 单词必须在匹配的行中存在或不存在,或者它应该存在 加权高于或低于平时。常见的词语,如“某些”或 “then”是停用词,如果在搜索中存在则不匹配 串。 IN BOOLEAN MODE修饰符指定布尔搜索。对于 更多信息,请参见第12.9.2节“布尔全文搜索”。

  • 查询扩展搜索是对自然语言搜索的修改。搜索字符串用于执行自然语言 搜索。然后搜索返回的最相关行中的单词 被添加到搜索字符串中,然后再次进行搜索。该 query返回第二次搜索中的行。

有关更多信息,请参阅:

http://devzone.zend.com/26/using-mysql-full-text-searching/

http://www.iamcal.com/publish/articles/php/search/