當制定查詢以在自動填充表單(jquery Axax + PHP)中使用時,我有一個關於SQL最佳實踐的問題。自動完成SQL查詢建議(Ajax + PHP)
讓我們假設如下:
- 我有書
- 有些書的標題標題數據庫沒有一個明確的文章(以下簡稱「」或「A」),如「生活PI」
- 有些書有一個明確的文章標題(以下簡稱‘’或‘A’),如‘麥田裏的守望者’
其結果是,用戶將輸入書名或者在開始時使用「The」或簡單省略「The」並開始查詢而沒有任何明確的文章。
三種可能的查詢似乎存在:
SELECT 'title' FROM 'books' WHERE 'title' LIKE '%$string'
或
SELECT 'title' FROM 'books' WHERE 'title' LIKE '$string%'
或
SELECT 'title' FROM 'books' WHERE 'title' LIKE '%$string%'
當使用第一查詢方法(其中%是字符串之前),很難得到任何結果,因爲字符串之前的通配符似乎錯誤地行爲。
當使用第二個查詢時,它似乎傾向於在標題前使用「The」來完全匹配。因此,搜索「麥田守望者」的用戶將找到該書,但搜索「麥田守望者」的用戶不會。
最後一個結果是最好的結果,因爲它在字符串之前和之後都有一個通配符。但是,它也提供了最長的自動完成列表。用戶將不得不鍵入幾個字母來縮小搜索結果。
關於實現更高效查詢的任何想法?或者是第三個選項最好的一個(看到它是不可行的一本書的標題分開定冠詞?
由於提前,
這個我沒有想到,就像REGEX一樣,我會更深入地研究這個問題,但是,這可能會在一段時間後變得困難,畢竟,一些停用詞是標題的一部分。即「對於上帝和國家」 – 2013-03-11 20:20:24
例如「對於上帝和國家」,如果你不爲'&'和'移除停用詞',你可能會拿出20個結果,你可能會拿出20個結果,但如果你刪除停用詞你可能只會得到5個結果。 – Girish 2013-03-11 20:26:23