在 Solr/Lucene 中,最好的方法是索引文本列以表现得像 SQL 一样LIKE '%foo%
,其中最佳匹配首先出现?在我的情况下,“最佳”意味着首先是完全匹配,然后是更少的额外字符,然后是更多的额外字符。例如
搜索“1234”应该返回
- 1234
- 12345(一个额外的字符)
- 01234
- 123456(两个额外的字符)
- 001234567890
- 等等
到目前为止我已经尝试过并且不太有效(列映射为text_en_splitting
)
- 搜索
1234
-> 仅完全匹配 - 搜索
*1234*
-> 找到所有内容,但没有获得更高的精确匹配分数 - search for
1234~
-> 将匹配 12345 但不会获得更高的精确匹配。不会匹配较长的字符串,例如“001234567890”。