脚本宝典收集整理的这篇文章主要介绍了php – 搜索引擎关键词解析器,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_1@>苹果和橘子(AND操作符)
>苹果或橘子(OR操作符)
>苹果而不是橘子(AND NOT操作符)
>“苹果”(行情操作符)
>苹果和(橘子或梨)(圆括号运算符)
> Appl *(明星操作符)@H_360_7@
@H_502_1@使用一些PReg_replace,我设法将字符串转换为数组,然后解析此数组以获取MySQL查询.
但我不喜欢这种方式而且非常不稳定!
@H_502_1@我在网上搜索了一些这样做的脚本,我没有运气!
@H_502_1@有人可以帮我实现吗?@H_502_1@谢谢
TOKENS ::= (AND,OR,NOT,WORD,WOrdsTAR,LPAREN,RPAREN,QUOTE) WORD ::= '/w+/' WORDSTAR ::= '/w+\*/'@H_502_1@语法应该像这样定义:
QUERY ::= word QUERY ::= wordstar QUERY ::= lparen QUERY rparen QUERY ::= QUERY and QUERY QUERY ::= QUERY or QUERY QUERY ::= QUERY and not QUERY QUERY ::= quote MQUERY quote MQUERY ::= word MQUERY MQUERY ::= word@H_502_1@该语法定义了一种语言,其中包含您需要的所有功能.根据您使用的软件,您可以定义处理每个规则的函数.这样,您可以将文本查询转换为sql where子句. @H_502_1@我不是真的进入PHP,但我在网上搜索了一个解析器生成器并且出现了PHP_ParserGenerator.
@H_502_1@请记住,只要数据库增长,这些查询可能会成为结构化存储系统的问题.
@H_502_1@您可能想要尝试一个全文搜索引擎,它允许您执行此操作以及与文本搜索相关的许多其他功能.这就是IndexTank的工作原理@H_502_1@首先,将所有数据库记录(或文档)添加(或搜索方言中的“索引”)到IndexTank.
$api = new ApiClient(...); $index = $api->get_index('my_index'); foreach ($dbrows as $row) { $index->add_document($row->id,array('text' => $row->text)); }@H_502_1@之后,您可以使用所需的所有运算符在索引中进行搜索
$index = $api->get_index('my_index'); $seArch_result = $index->search('Apples AND Oranges'); $search_result = $index->search('Apples OR Oranges'); $search_result = $index->search('Apples AND NOT Oranges'); $search_result = $index->search('"apples oranges"'); $search_result = $index->search('Apples AND ( Oranges OR PEars )'); $search_result = $index->search('Appl*');@H_502_1@我希望我回答你的问题.
以上是脚本宝典为你收集整理的php – 搜索引擎关键词解析器全部内容,希望文章能够帮你解决php – 搜索引擎关键词解析器所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。