We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
描述你的问题(Describe the bug)
在小文件数工程下搜索效果正常,但是在大文件数(>10000)项目下搜索精度会出现问题,严重情况下搜索出的结果完全不相干
在极端情况下,exactMatches+fuzzyMatches完全命中前面200条数据,后面的文件完全搜索不到
比如要搜索gradlew,输出结果会出现如下情况。以下在vscode不会出现问题
g 输出不相干 gr 输出不相干 gra 输出不相干 grad 输出不相干 gradl 输出不相干 gradle 包含需要的文件 gradlew 精准匹配
复现路径(To Reproduce)
获取文件夹对应的文件名称数组 匹配文件 精准匹配exactMatches 模糊匹配fuzzyMatches exactMatches+fuzzyMatches=DEFAULT_FILE_SEARCH_LIMIT(200条)则中断匹配 返回匹配的200条数据
调用后端fileSearchService.find接口 返回DEFAULT_FILE_SEARCH_LIMIT 200条数据 前端进行排序,然后展示
vs code的文件搜索逻辑如下:
判断搜索条件是否命中缓存 命中缓存则直接从缓存获取返回 如果没有命中缓存则走正常的文件搜索逻辑
使用trySortedSearchFromCache判断缓存是否命中,命中后从缓存中获取并使用sortResults方法进行排序,再将结果返回
trySortedSearchFromCache中没有命中,则使用doSortedSearch进行正常文件搜索,doSortedSearch的搜索逻辑如下:
使用rg工具进行文件集合获取 将搜索结果放入cache缓存 再使用sortResults将结果进行排序 返回排序结果
下面通过打开相同文件夹code,对比codefuse和vs code对gradlew关键字进行检索。
通过对比,可以看到codefuse的检索结果没有达到一个很好的效果。
预期表现(Expected behavior)
环境信息(Environment)
The text was updated successfully, but these errors were encountered:
@eedpublic 这个问题我们正在解决中
Sorry, something went wrong.
No branches or pull requests
描述你的问题(Describe the bug)
问题
在小文件数工程下搜索效果正常,但是在大文件数(>10000)项目下搜索精度会出现问题,严重情况下搜索出的结果完全不相干
极端情况
在极端情况下,exactMatches+fuzzyMatches完全命中前面200条数据,后面的文件完全搜索不到
短字符匹配
比如要搜索gradlew,输出结果会出现如下情况。以下在vscode不会出现问题
g 输出不相干
gr 输出不相干
gra 输出不相干
grad 输出不相干
gradl 输出不相干
gradle 包含需要的文件
gradlew 精准匹配
复现路径(To Reproduce)
1. codefuse文件搜索处理逻辑
1.1. 后端处理逻辑
获取文件夹对应的文件名称数组
匹配文件
精准匹配exactMatches
模糊匹配fuzzyMatches
exactMatches+fuzzyMatches=DEFAULT_FILE_SEARCH_LIMIT(200条)则中断匹配
返回匹配的200条数据
1.2. 前端处理逻辑
调用后端fileSearchService.find接口
返回DEFAULT_FILE_SEARCH_LIMIT 200条数据
前端进行排序,然后展示
2. vs code文件搜索逻辑
vs code的文件搜索逻辑如下:
判断搜索条件是否命中缓存
命中缓存则直接从缓存获取返回
如果没有命中缓存则走正常的文件搜索逻辑
2.1. 从缓存返回
使用trySortedSearchFromCache判断缓存是否命中,命中后从缓存中获取并使用sortResults方法进行排序,再将结果返回
2.2. 非缓存返回
trySortedSearchFromCache中没有命中,则使用doSortedSearch进行正常文件搜索,doSortedSearch的搜索逻辑如下:
使用rg工具进行文件集合获取
将搜索结果放入cache缓存
再使用sortResults将结果进行排序
返回排序结果
3. 搜索结果对比
下面通过打开相同文件夹code,对比codefuse和vs code对gradlew关键字进行检索。
通过对比,可以看到codefuse的检索结果没有达到一个很好的效果。
3.1. codefuse搜索gradlew
3.2. vs code搜索gradlew
预期表现(Expected behavior)
环境信息(Environment)
The text was updated successfully, but these errors were encountered: