我有一個電影名稱表,我希望能夠在該表中搜索電影。但我希望能夠搜索部分標題,並仍然返回結果。例如,如果有一個名爲「安慰的量子」的唱片,那麼我希望能夠搜索「量子安慰」,甚至「007:量子安慰」,我想找到那個唱片。有沒有辦法做到這一點?mysql關鍵字搜索
編輯 我該如何根據比賽來排序?也就是說,最匹配的行應該先返回。
我有一個電影名稱表,我希望能夠在該表中搜索電影。但我希望能夠搜索部分標題,並仍然返回結果。例如,如果有一個名爲「安慰的量子」的唱片,那麼我希望能夠搜索「量子安慰」,甚至「007:量子安慰」,我想找到那個唱片。有沒有辦法做到這一點?mysql關鍵字搜索
編輯 我該如何根據比賽來排序?也就是說,最匹配的行應該先返回。
以布爾模式使用MySQL Full Text Search。 如果您在搜索'007:量子安慰'時這樣做,因爲它在列中至少包含一個匹配結果,它將顯示,您可以通過相關性進行排序。
SELECT *, MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) AS rank
FROM films
WHERE MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE) ORDER BY rank DESC
看一看full text search capabilities of MySQL。一旦你建立了一個全文索引,你可以做這樣的查詢:
SELECT *
FROM movies
WHERE MATCH(title) AGAINST ('quantum solace' IN BOOLEAN MODE)