Code Monkey home page Code Monkey logo

Comments (11)

bells avatar bells commented on August 27, 2024

@xiaoheike ,先确定集群里面的每个节点都有安装该插件。

from elasticsearch-analysis-dynamic-synonym.

xiaoheike avatar xiaoheike commented on August 27, 2024

@bells 不好意思,问题里边我没有描述清楚。我做一些补充说明,该问题在单台机子(只有一个ES服务实例,shard=5, replia=1)时就会出现。因此我想这个和集群中的其他机子没有安转相同插件无关。不知道你还有什么建议?

from elasticsearch-analysis-dynamic-synonym.

dcais avatar dcais commented on August 27, 2024

单台机子 replia = 1 似乎没有什么意义,replia = 0 时会出现相同的情况吗?

from elasticsearch-analysis-dynamic-synonym.

xiaoheike avatar xiaoheike commented on August 27, 2024

@davidcai19840412 replia = 0 也是会出现该问题的。
这一周我一直在纠结这个问题,做了能够想到的实验,但是每次都失败了。不知道你有没有遇到过呢?难道是我的使用方法不对?

from elasticsearch-analysis-dynamic-synonym.

xiaoheike avatar xiaoheike commented on August 27, 2024

找到问题的原因了:
DynamicSynonymTokenFilterFactory.create() 方法存在并发,变量DynamicSynonymTokenFilterFactory.dynamicSynonymFilters 不支持并发添加,导致部分的DynamicSynonymFilter 对象没有保存到 dynamicSynonymFilters 中。
解决方案,修改两处:

private Map<DynamicSynonymFilter, Integer> dynamicSynonymFilters = new WeakHashMap()-->private List<DynamicSynonymFilter> dynamicSynonymFilters = Collections.synchronizedList(new ArrayList<DynamicSynonymFilter>());


public void run() {
	if (synonymFile.isNeedReloadSynonymMap()) {
		synonymMap = synonymFile.reloadSynonymMap();
		for(DynamicSynonymFilter dynamicSynonymFilter : dynamicSynonymFilters) {
			dynamicSynonymFilter.update(synonymMap);
			logger.info("{} success reload synonym", indexName);
		}
	}
}

我尝试过如下修改:
private Map<DynamicSynonymFilter, Integer> dynamicSynonymFilters = new WeakHashMap()-->private Map<DynamicSynonymFilter, Integer> dynamicSynonymFilters = new ConcurrentHashMap<>();
但是在 create 方法调用时,有对象丢失,具体原因没有深究。
@bells 麻烦你验证修改哈

from elasticsearch-analysis-dynamic-synonym.

lzg406 avatar lzg406 commented on August 27, 2024

遇到同样的问题,同样的语句,查询返回的记录条数,总total数,差异比较大

from elasticsearch-analysis-dynamic-synonym.

dima-goldin avatar dima-goldin commented on August 27, 2024

i am having the same issue. after changing synonym.txt same search that before the change returned N results, after the change (and changing the query accordingly + waiting for synonym refresh) searches result in inconsistent responses.
no hits, some expected hits, all expected hits.

UPDATE:
I see this is fixed in the new version. i am using an older version for elasticsearch 5.1.1. took the fix from @xiaoheike 's pull request.
Thanks!

from elasticsearch-analysis-dynamic-synonym.

xinlmain avatar xinlmain commented on August 27, 2024

@xiaoheike @bells 请问此问题在master中修掉了吗?

from elasticsearch-analysis-dynamic-synonym.

xiaoheike avatar xiaoheike commented on August 27, 2024

应该是处理了,之前也有小伙伴询问过这个问题,根据我的分支或者我在本页得修改方案修改代码试试。@xinlmain

from elasticsearch-analysis-dynamic-synonym.

wang690698686 avatar wang690698686 commented on August 27, 2024

为啥我多次请求同义词,会有分词结果不一样的情况?这是为什么呢?

from elasticsearch-analysis-dynamic-synonym.

wang690698686 avatar wang690698686 commented on August 27, 2024

其中“三次方”为自定义词
偶尔出现这种情况
{
"tokens": [
{
"token": "三",
"start_offset": 0,
"end_offset": 1,
"type": "en",
"position": 0
},
{
"token": "次方",
"start_offset": 1,
"end_offset": 9,
"type": "m",
"position": 1
}
]
}
想要这种情况。
{
"tokens": [
{
"token": "三次方",
"start_offset": 0,
"end_offset": 9,
"type": "userDefine",
"position": 0
}
]
}

from elasticsearch-analysis-dynamic-synonym.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.