假设我想有一个"text index"对于部分搜索和高级搜索,在文本字段中执行如下操作:
supertext": "a111=萨尔瓦多a111=萨尔瓦a111=萨尔瓦a111=萨尔瓦a111=萨尔瓦a111=萨尔瓦多a113=赫尔南德斯a113=她的a113=赫尔南德斯a113=赫尔纳a113=赫尔南a113=赫尔南德">
似乎等号是解析器的标记分隔符(停止字符)之一。这个MongoDB文档页面引用unicode字符:破折号,连字符,Pattern_Syntax, Quotation_Mark, Terminal_Punctuation和White_Space在unicode 8.0字符数据库PropList从这里:https://www.unicode.org/Public/8.0.0/ucd/PropList.txt
我想知道的是相反的情况。我可以使用哪些非标记分隔符的特殊字符?
我想找到"a111=萨尔瓦多"在文本字段中。现在,搜索"a111=萨尔瓦多"还有"萨尔瓦多";返回相同或相似的分数。
例如,在存储数据时还可以使用什么,例如:
a111#Salvador
a111@Salvador
a111`Salvador
似乎有人可能有这方面的经验,而不是我花几个小时搜索Unicode页面上不存在的字符。
或者我需要更长的alpha字符系列,或者不需要字符?
a111valueSalvador
a111Salvador
当前主控https://github.com/mongodb/mongo/blob/eb2b72cf9c0269f086223d499ac9be8a270d268c/src/mongo/db/fts/unicode/gen_delimiter_list.py#L27的分隔符为:
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)