2012-11-16 59 views
2

所以我一直在努力與FULLTEXT索引搜索,有一個以前的問題here這是解決了,但它似乎對一些搜索它的工作原理確定,別人豈不MySQL的全文搜索自動完成功能問題

由於之前做,在遊戲桌上尋找遊戲,大約有25k行,g_name上有FULLTEXT索引。我也需要它來使用自動完成功能,例如使用不完整的搜索詞

使用搜索項,我將它展開,然後循環每次迭代,在末尾附加*,例如'grand * theft * auto * v * '

所以這裏有一些示例搜索。它輸出頂部的查詢:

布爾模式關閉,導致OK

(鏈接死)上

BOOLEAN MODE,結果預計不會回來了

(鏈接死)

BOOLEAN MODE關閉,結果ok,雖然不確定'Tenchu:Shadow Assassins'與其他'刺客信條'遊戲的得分更相關嗎?

(鏈路死的)上,結果未示出 '殺手信條III'

(鏈路死)

自動填充短信部分字,BOOLEAN模式關閉,沒有結果

BOOLEAN MODE?

(鏈接死)

自動完成短信的部分文字,布爾模式關閉,確定結果

(鏈接死)

不知道爲什麼打開布爾模式開/關產生這種奇怪的結果。它就像我需要一些搜索和其他人一樣,但我需要一個搜索查詢。分數似乎只是BS的數字從不知所措。

另外,如果我開始在混合中添加'+'來表示非可選詞,它會產生更奇怪的結果。我添加全文的全部原因是爲了使事情更加靈活,並返回更多有用的結果,但似乎讓事情變得更糟。

所以我的問題,我怎麼讓它返回有用的結果每一次,不管那個特定的搜索詞/遊戲的細微差別的,如果它的部分搜索,或足月。理想的情況是類似如何http://www.metacritic.com/做(右上角的搜索框)

回答

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 ,請注意下面的例子:

前綴搜索:選擇ENTRYID從英尺WHERE MATCH(項)反對( '畢業生*' IN BOOLEAN MODE);

布爾搜索:SELECT ENTRYID FROM英尺WHERE MATCH(條目)AGAINST( '+畢業-michigan' IN BOOLEAN MODE);

這種方法的工作原理,但速度很慢,有排名不佳。

+0

你可以從我的腳本查詢(在每一個鏈接到了頂部呼應)看到我已經使用前綴搜索,並已指定我用了「必須存在」 +運營商。犯規回答我的問題是如何得到它的工作或者爲什麼它帶回了這樣奇怪的結果 – Horse

+0

環節都死了... – Smokie