elasticsearch - ElasticSearch中用户定义的术语向量

标签 elasticsearch knn

如何(如果可能的话)在ElasticSearch索引中插入任何项 vector ?

ES在后台计算术语 vector 以执行其文本挖掘任务,但是能够输入任何(术语,权重)对列表将很有用。

为什么?

好吧,例如,尽管ES启用了k = 2的kNN(k最近邻),但在地理邻近的情况下,它没有任何明确的k> 2功能。如果我们能够插入自己的术语 vector ,则可以利用ES内置的文本索引方法来破解k> 2的功能。

有关此问题的迹象吗?

最佳答案

据我所知, flex 搜索无法做到这一点(我仍在寻找最快的KNN实时搜索方法, flex 搜索是我的选择之一)。

Elasticsearch基于反向索引,因此术语 vector 中的每个术语(可能来自句子)都将在排序列表中建立索引。当我们搜索查询时,查询将被分析成一个词 vector ,而elasticsearch(实际上是Lucene)将搜索每个词的索引。

但是KNN需要计算两个 vector 之间的距离,即使它们不共享相同的项,传统的倒排索引也不是为此要求而设计的。

如您所说,elasticsearch可以通过地理查询在k = 2时实现实时KNN搜索,但我认为它不能支持k> 2。

顺便说一句,如果您发现任何可以帮助实现实时KNN搜索的方法,即K可能是一个非常大的数字(100000?),并且在一个庞大的数据集( vector 的数量)上,请告诉我,thx :)

关于elasticsearch - ElasticSearch中用户定义的术语向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30119265/

相关文章:

elasticsearch - Elasticsearch中的动态模板会影响性能吗?

search - 使用 elasticsearch 集群和 Web 服务器集群避免单点故障的最佳方法

elasticsearch - 数组中重复值的value_count而不是doc_count

python - 评估 k-means 算法找到的邻居

python - 使用自定义数据集而不是 MNIST 进行训练

curl - 如何删除elasticsearch中特定索引中的多个数据

elasticsearch - 使用Logstash配置读取和使用Elasticsearch Metada

sql - 两个表之间最近点的唯一分配

python - 残差图诊断以及如何改进回归模型

java - R 和 Java + WEKA 在计算最近邻方面的差异