想知道在弹性搜索中使用多语言索引和搜索的最佳实践或经验是什么.我通读了大量资源,尽可能提炼出可用的索引选项:
每种语言单独的索引;
用于多语言场的多字段类型;
所有可能语言的单独字段.
所以,想知道选择这些选项中的一个或另一个(或者其他一些我错过的)的副作用是什么.我想有更多的索引并没有真正减慢群集的速度(如果它不是一些大量的语言),所以不确定从选择2或3可以得到什么,除了可能更容易维护.
欢迎任何帮助!
我对弹性搜索中的常量得分查询的理解是,提升因子将被指定为每个匹配查询的得分.该文件说:
包含过滤器或其他查询的查询,只返回等于过滤器中每个文档的查询提升的常量分数.
但是,当我发送此查询时:
"query": {
"constant_score": {
"filter": {
"term": {
"source": "BBC"
}
},
"boost": 3
}
},
"fields": ["title", "source"]
Run Code Online (Sandbox Code Playgroud)
所有匹配的文件得分为1?!我无法弄清楚我做错了什么,并且还尝试使用查询而不是在constant_score中过滤.
将 tf.idf 转换应用于 spark 中的新文档的最佳方法是什么?我有一个设置,可以在其中离线训练模型,然后加载它并将其应用于新文件。基本上,如果无法访问模型 IDF 分布,则计算 IDF 没有多大意义。
到目前为止,我想到的唯一解决方案是保存训练集的 TF RDD 并将新文档附加到其中,然后计算 IDF RDD 并从 IDF RDD 中提取新文件。这样做的问题是我必须将整个 TF 向量保存在内存中(我想它也可能与 IDF RDD 相关)。
这看起来像是某人已经遇到的问题,因此请寻求建议并了解最佳方法。
干杯,
伊利亚
我最近开始pyspark在EMR群集上运行的许多作业中遇到一堆错误。错误是
java.lang.IllegalArgumentException
at java.nio.ByteBuffer.allocate(ByteBuffer.java:334)
at org.apache.arrow.vector.ipc.message.MessageSerializer.readMessage(MessageSerializer.java:543)
at org.apache.arrow.vector.ipc.message.MessageChannelReader.readNext(MessageChannelReader.java:58)
at org.apache.arrow.vector.ipc.ArrowStreamReader.readSchema(ArrowStreamReader.java:132)
at org.apache.arrow.vector.ipc.ArrowReader.initialize(ArrowReader.java:181)
at org.apache.arrow.vector.ipc.ArrowReader.ensureInitialized(ArrowReader.java:172)
at org.apache.arrow.vector.ipc.ArrowReader.getVectorSchemaRoot(ArrowReader.java:65)
at org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:162)
at org.apache.spark.sql.execution.python.ArrowPythonRunner$$anon$1.read(ArrowPythonRunner.scala:122)
at org.apache.spark.api.python.BasePythonRunner$ReaderIterator.hasNext(PythonRunner.scala:406)
at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)
at org.apache.spark.sql.execution.python.ArrowEvalPythonExec$$anon$2.<init>(ArrowEvalPythonExec.scala:98)
at org.apache.spark.sql.execution.python.ArrowEvalPythonExec.evaluate(ArrowEvalPythonExec.scala:96)
at org.apache.spark.sql.execution.python.EvalPythonExec$$anonfun$doExecute$1.apply(EvalPythonExec.scala:127)...
Run Code Online (Sandbox Code Playgroud)
它们似乎都发生在apply熊猫系列的功能中。我发现的唯一更改是pyarrow在星期六(05/10/2019)更新的。测试似乎适用于0.14.1
所以我的问题是,是否有人知道这是新更新的pyarrow中的错误,还是有一些重大更改会导致pandasUDF将来难以使用?