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

修复同义词查询有概率查询不到 #16

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

xiaoheike
Copy link

原因:DynamicSynonymTokenFilterFactory.create() 方法并发,导致 dynamicSynonymFilters 中有数据丢失
要点:private Map<DynamicSynonymFilter, Integer> dynamicSynonymFilters = new WeakHashMap<DynamicSynonymFilter, Integer>(); --》 private List dynamicSynonymFilters = Collections.synchronizedList(new ArrayList<>());

原因:DynamicSynonymTokenFilterFactory.create() 方法并发
要点:private Map<DynamicSynonymFilter, Integer> dynamicSynonymFilters = new WeakHashMap<DynamicSynonymFilter, Integer>(); --》 private List<DynamicSynonymFilter> dynamicSynonymFilters = Collections.synchronizedList(new ArrayList<>());
@xinlmain
Copy link

@xiaoheike @bells 现在这个问题到底有没有修掉?为什么这个pr还open?

@lance23
Copy link

lance23 commented Apr 12, 2019

DynamicSynonymFilterList会不会越来越大,最终导致内存问题?
因为之前的代码用的是弱引用,gc的时候会被回收,不会产生内存问题。

@xiaoheike
Copy link
Author

DynamicSynonymFilterList会不会越来越大,最终导致内存问题?
因为之前的代码用的是弱引用,gc的时候会被回收,不会产生内存问题。

从现在的自己的技术水平来分析一下这个问题。首先要做成WeakHashMap也还是可以的,只是当时只想着解决问题没有到你提及的这个问题。WeakHashMap应该是在内存不够使用的时候才会被回收,如果被回收了,是不是就会有一部分同义词不起作用?如果同义词的数据非常庞大,实际上这个插件应该是无法支撑的,因为是一次性加载,估计得要本地缓存(配置容量、过期时间)+第三方存储(mysql、redis),实现动态加载

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants