我有一個資料庫,里面有德國城鎮的名稱,如慕尼黑和明斯特。
如果我這樣查詢:
如果我這樣查詢:
SELECT name,
MATCH(name) AGAINST(' mün*' IN BOOLEAN MODE) As relevance
FROM place_names
ORDER BY relevance DESC
對于所有包含mun、mün或任何其他在不考慮變音的情況下扁平化為mun的文本的地方,我得到相同的相關性值。換句話說,搜索mun或mün得到的結果完全相同。
我如何配置我的資料庫,使搜索mün時對實際包含字母ü的詞給予更高的相關性,但仍然認為u是一個匹配?
uj5u.com熱心網友回復:
CREATE TABLE place_names (id SERIAL PRIMARY KEY, name VARCHAR(255) )。 創建全文本索引idx ON place_names (name); INSERT INTO place_names (name) VALUES ('慕尼黑'), ('明斯特')。 SELECT * FROM place_names;
id name 1 慕尼黑 慕尼黑 2 明斯特 明斯特
SELECT name, MATCH(name) AGAINST(' mün*' IN BOOLEAN MODE) As relevance FROM place_names ORDER BY relevance DESC;
名稱 相關度 Munich 0.000000001885928302414186
明斯特 明斯特 0.000000001885928302414186
ALTER TABLE place_names ADD COLUMN name2 VARCHAR(255) COLLATE utf8mb4_0900_bin as (name) STORED;
CREATE FULLTEXT INDEX idx2 ON place_names (name2);
SELECT name, MATCH(name) AGAINST(' mün*' IN BOOLEAN MODE) As relevance。 MATCH(name2) AGAINST(' mün*' IN BOOLEAN MODE) as relevance2 FROM place_names ORDER BY relevance DESC;
名稱 relevance relevance2Munich 0.000000001885928302414186 0
明斯特 明斯特 0.000000001885928302414186 0.0906190574169159?
db<>fiddle here
因此
SELECT name,
MATCH(name) AGAINST(' mün*' IN BOOLEAN MODE) As relevance
FROM place_names
ORDER BY MATCH(name2) AGAINST(' mün*' IN BOOLEAN MODE) DESC;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/333998.html
標籤:
下一篇:從表格資料中輸出一個字串
