我需要将搜索词列表转换为最有效的组合搜索词集.任何单词或引用的短语都可以用OR分隔.许多术语可以在括号内组合.也可以使用AND.
例如,foo bar和boo bar共享bar,因此可以组合为两个不同的搜索项而不是两个不同的搜索项(foo OR boo) AND bar.
这是算法需要做的事情.鉴于此数据集:
foo bar
boo bar
goo bar
hoo doo
foo manchu
moo bar
too bar
foo fighters
"blue kazoo" bar
baz
qux
quux
Run Code Online (Sandbox Code Playgroud)
我想得到以下回复:
(foo OR boo OR goo OR moo OR too OR "blue kazoo") AND bar
foo AND (manchu OR fighters)
hoo doo
baz OR qux OR quux
Run Code Online (Sandbox Code Playgroud)
这不起作用:
(foo bar) OR (boo bar) OR (goo bar) OR (foo manchu)
Run Code Online (Sandbox Code Playgroud)
我将使用PHP,但我会用伪代码,PHP或我将从主要语言转换答案.