Skip to content
New issue

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

[BUG] 文件搜索结果没有命中具体文件 #4168

Open
eedpublic opened this issue Nov 14, 2024 · 1 comment
Open

[BUG] 文件搜索结果没有命中具体文件 #4168

eedpublic opened this issue Nov 14, 2024 · 1 comment
Labels
🐞 bug Something isn't working

Comments

@eedpublic
Copy link

eedpublic commented Nov 14, 2024

描述你的问题(Describe the bug)

问题

在小文件数工程下搜索效果正常,但是在大文件数(>10000)项目下搜索精度会出现问题,严重情况下搜索出的结果完全不相干

极端情况

在极端情况下,exactMatches+fuzzyMatches完全命中前面200条数据,后面的文件完全搜索不到

短字符匹配

比如要搜索gradlew,输出结果会出现如下情况。以下在vscode不会出现问题

g 输出不相干
gr 输出不相干
gra 输出不相干
grad 输出不相干
gradl 输出不相干
gradle 包含需要的文件
gradlew 精准匹配

复现路径(To Reproduce)

1. codefuse文件搜索处理逻辑

1.1. 后端处理逻辑

image

获取文件夹对应的文件名称数组
匹配文件
精准匹配exactMatches
模糊匹配fuzzyMatches
exactMatches+fuzzyMatches=DEFAULT_FILE_SEARCH_LIMIT(200条)则中断匹配
返回匹配的200条数据

1.2. 前端处理逻辑

image
image

调用后端fileSearchService.find接口
返回DEFAULT_FILE_SEARCH_LIMIT 200条数据
前端进行排序,然后展示

2. vs code文件搜索逻辑

vs code的文件搜索逻辑如下:

判断搜索条件是否命中缓存
命中缓存则直接从缓存获取返回
如果没有命中缓存则走正常的文件搜索逻辑

2.1. 从缓存返回

使用trySortedSearchFromCache判断缓存是否命中,命中后从缓存中获取并使用sortResults方法进行排序,再将结果返回

image
image

2.2. 非缓存返回

trySortedSearchFromCache中没有命中,则使用doSortedSearch进行正常文件搜索,doSortedSearch的搜索逻辑如下:

使用rg工具进行文件集合获取
将搜索结果放入cache缓存
再使用sortResults将结果进行排序
返回排序结果

image
image

image

3. 搜索结果对比

下面通过打开相同文件夹code,对比codefuse和vs code对gradlew关键字进行检索。

通过对比,可以看到codefuse的检索结果没有达到一个很好的效果。

3.1. codefuse搜索gradlew

image
image
image
image
image

3.2. vs code搜索gradlew

image
image
image
image

预期表现(Expected behavior)

环境信息(Environment)

  • OS: [e.g. macOS 11.2 Apple M1/Windows10/Windows11]
  • Browser: [e.g. chrome, safari, electron]
  • OpenSumi Version: [e.g. 2.13.0]
@eedpublic eedpublic added the 🐞 bug Something isn't working label Nov 14, 2024
@eedpublic
Copy link
Author

@eedpublic 这个问题我们正在解决中

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐞 bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant