我正在寻找一个查询,该查询将允许用户在搜索结果时使用各种字符。角色位置是完全随机的。我们使用特殊字符È,Š,Ć,Č,Ž和Đ,因此所有变体都必须匹配,因为大多数用户不知道如何正确拼写。
示例:
const FastText = require('fasttext.js');
const fastText = new FastText({
loadModel: './model_cooking.bin'
});
var sample="Our Twitter run by the band and crew to give you an inside look into our lives on the road. Get #FutureHearts now: http://smarturl.it/futurehearts";
fastText.load()
.then(loaded => {
console.log(`loaded ${loaded}!`);
return fastText.predict(sample);
})
.then(labels=> {
console.log("TEXT:", sample, "\nPREDICT:",labels );
sample="LBi Software provides precisely engineered, customer-focused #HRTECH solutions. Our flagship solution, LBi HR HelpDesk, is a SaaS #HR Case Management product.";
return fastText.predict(sample);
})
.then(labels=> {
console.log("TEXT:", sample, "\nPREDICT:",labels );
fastText.unload();
})
.catch(error => {
console.error(`error ${done}!`);
console.error(error);
});
答案 0 :(得分:1)
您可以使用COLLATE
SELECT *
FROM TableNAme
WHERE
columnName COLLATE Like '%MISIC%' COLLATE Latin1_general_CI_AI
latin1使服务器使用字符集拉丁1来处理字符串, 基本上是ascii。
CI指定不区分大小写,因此“ ABC”等于“ abc”。
AI指定不区分重音,因此“ü”等于“ u”。
有关更多信息的整理,请通过 Collete
推荐人:@JINO SHAJI
根据@Adephx的评论,此功能可以按预期运行,只需进行少量修改
SELECT * FROM [TABLE] WHERE [COLUMN] LIKE '%NAME%' COLLATE Latin1_general_CI_AI
答案 1 :(得分:0)
应用COLLATION是一种很好的做法,特别是如果我们想摆脱 all 重音符号,但是,如果我们需要对各个重音符进行更精细的控制(È,Š,Ć,Č,Ž),我们可以执行以下操作来有选择地比较各个重音符号。
大多数DBMS根据单词的发音(发音)提供字符串比较功能。 SQL Server为此提供了两个内置函数:SOUNDEX()和DIFFERENCE()。在这种情况下,我们可以这样做:
IF (DIFFERENCE('MISIC', 'MISIĆ')>=4)
AND (DIFFERENCE('MISIC', 'MISIČ')>=4)
AND (DIFFERENCE('MISIC', 'MIŠIC')>=4)
AND (DIFFERENCE('MISIC', 'MIŠIĆ')>=4)
AND (DIFFERENCE('MISIC', 'MIŠIČ')>=4)
PRINT 'Same word'
ELSE
PRINT 'Different word.'
实际上,在许多语言中,'Š'听起来与' S '完全不同,因此SQL Server认为它们的兼容性较差,但是这里提供了一种变通方法等效项:
WITH words AS (SELECT value FROM STRING_SPLIT(N'MISIĆ,MISIČ,MIŠIC,MIŠIĆ,MIŠIČ', ','))
SELECT
value,
CASE WHEN (DIFFERENCE('MISIC', replace(value,'Š','S'))>=4)
THEN 'Same word'
ELSE 'Not same'
END AS 'Comparison'
FROM words
输出:
value comparison
----- ----------
MISIĆ Same word
MISIČ Same word
MIŠIC Same word
MIŠIĆ Same word
MIŠIČ Same word
以上示例将在“ Microsoft SQL Server 2016”或更高版本中工作,请注意,STRING_SPLIT()函数仅用于迭代单词/字符串数组,而该函数在SQL Server 2014或更低版本中不可用。 / p>
希望这会有所帮助。