【问题标题】:MySQL fulltext autocomplete search issuesMySQL全文自动完成搜索问题
【发布时间】:2012-11-05 07:41:27
【问题描述】:

所以我一直在努力进行 FULLTEXT 索引搜索,之前有一个问题 here 已解决,但似乎对于某些搜索它可以正常工作,而在其他搜索中则不行

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

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

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

布尔模式关闭,结果正常

(链接失效)

BOOLEAN MODE 开启,结果未按预期返回

(链接失效)

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

(链接失效)

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

(链接失效)

自动补全部分单词,布尔模式关闭,没有结果?!

(链接失效)

自动补全部分单词,BOOLEAN MODE 关闭,结果正常

(链接失效)

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

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

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

【问题讨论】:

    标签: mysql search full-text-search


    【解决方案1】:

    我教授的一个课程项目涵盖了这个主题: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);

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

    【讨论】:

    • 从我的脚本中的查询中可以看到(在上面每个链接的顶部回显)我已经使用了前缀搜索,并且已经指定我使用了“必须存在”+ 运算符。没有回答我关于如何让它工作或为什么它会带来如此奇怪的结果的问题
    猜你喜欢
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-09
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    相关资源
    最近更新 更多