问题描述
假设我想在文本字段上有一个“文本索引”,如下用于部分搜索和高级搜索:
"supertext": "a111=Salvador a111=Sal a111=Salv a111=Salva a111=Salvad a111=Salvado a113=Hernandez a113=Her a113=Hern a113=Herna a113=Hernan a11
似乎等号是解析器的标记化分隔符(停止字符)之一。此 MongoDB doc page 指 Unicode 8.0 字符数据库道具列表中的 Unicode 字符:Dash、Hyphen、Pattern_Syntax、Quotation_Mark、Terminal_Punctuation 和 White_Space:https://www.unicode.org/Public/8.0.0/ucd/PropList.txt
我想知道的是相反的情况。我可以使用哪些不是标记化分隔符的特殊字符?
我想在文本字段中找到“a111=Salvador”。现在,搜索“a111=Salvador”和仅搜索“Salvador”会返回相同或相似的分数。
比如我存储数据的时候还能用什么,比如:
a111#Salvador
a111@Salvador
a111`Salvador
似乎有人可能有这方面的经验,而不是我花几个小时在那个 Unicode 页面上搜索不存在的字符。
或者我需要更长的字母字符系列,还是不需要字符?
a111valueSalvador
a111Salvador
解决方法
delim_properties = [
"White_Space","Dash","Hyphen","Quotation_Mark","Terminal_Punctuation","Pattern_Syntax","STerm"
]
这让您有很多其他符号可供选择。例如尝试中间点:
00B7 ; Other_ID_Continue # Po MIDDLE DOT
0387 ; Other_ID_Continue # Po GREEK ANO TELEIA
经过 U+00B7 测试 - a111·Salvador
可以胜任,而且看起来很整洁。
在python术语中:
separator = '\u00B7'
sample = "a111" + separator + "Salvador"
print(sample)