2

所以我一直在努力进行 FULLTEXT 索引搜索,这里有一个以前的问题已解决,但似乎对于某些搜索它工作正常,而在其他搜索它没有

和以前一样,在游戏表中查找游戏,大约有 25k 行,在 g_name 上具有 FULLTEXT 索引。我还需要它使用自动完成功能,例如不完整的搜索词

使用搜索词,我将其分解,然后循环每次迭代,在末尾附加一个 *,例如 'grand* theft* auto* v*'

所以这里有一些示例搜索。它在顶部输出查询:

布尔模式关闭,结果正常

(链接失效)

布尔模式打开,结果未按预期返回

(链接失效)

布尔模式关闭,结果还可以,虽然不确定“天诛:暗影刺客”的得分与其他“刺客信条”游戏的相关性如何?

(链接失效)

布尔模式打开,结果未显示“刺客信条 iii”

(链接失效)

自动完成短信部分单词,布尔模式关闭,没有结果?!

(链接失效)

自动完成短信部分单词,布尔模式关闭,结果正常

(链接失效)

不知道为什么打开/关闭布尔模式会产生如此奇怪的结果。就像我需要它来进行某些搜索而关闭其他搜索,但我需要一个搜索查询。分数似乎只是不知从何而来的 BS 数字。

此外,如果我开始在非可选单词的组合中添加“+”,它会产生更奇怪的结果。我添加全文的全部原因是为了让事情更灵活,并返回更有用的结果,但似乎让事情变得更糟。

所以我的问题是,无论该特定搜索词/游戏的细微差别如何,以及它是部分搜索还是完整搜索,我如何让它每次都返回有用的结果。理想情况下类似于http://www.metacritic.com/的做法(右上角的搜索框)

4

1 回答 1

0

我教授的一个课程项目涵盖了这个主题:https ://grape.ics.uci.edu/wiki/public/wiki/cs122b-2012-spring-project4#Requirement2 解决方案:https ://grape.ics.uci.edu/ wiki/public/wiki/cs122b-2012-spring-mysql-fulltext 注意以下示例:

前缀搜索:SELECT entryID FROM ft WHERE MATCH (entry) AGAINST ('grad*' IN BOOLEAN MODE);

布尔搜索:SELECT entryID FROM ft WHERE MATCH (entry) AGAINST ('+graduate -michigan' IN BOOLEAN MODE);

这种方法有效,但速度慢且排名不佳。

于 2012-11-17T07:18:05.653 回答