appbaseio / appbaseio/reactivecore

Mutation of returned _source data in results by highlightResults function

未关闭
#10 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
JavaScript
星标
33
派生
27
PR 合并指标
30 天内没有已合并 PR

描述

When a user specifies they want their data to be highlighted the highlighted data returns a truncated portion in the _source.

Please see my comments below. I didn't think a pull request was appropriate as all I would be doing is deleting a function.

Is there a reason for mutating the source of the highlighted data?

Best,
Ryan

```
// src/utils/helper.js

// Why are we mutating the original _source object here?
// This takes away information for the end-user given by elasticsearch

// My use case of ElasticSearch is to store parsed pdfs as strings
// These contain 1000+ chars each

// The highlighted information given by elasticsearch have many fewer characters than this.
// Around 100 chars

// I want to be able to send the whole of the information to the end-user in the results

// If you remove this function (highlightResults)
// the user still retains the highlighted information in the main result object
// and the original _source information

const highlightResults = (result) => {
const data = { ...result };
if (data.highlight) {
Object.keys(data.highlight).forEach((highlightItem) => {
const highlightValue = data.highlight[highlightItem][0];
data._source = Object.assign({}, data._source, { [highlightItem]: highlightValue });
});
}
return data;
};

export const parseHits = (hits) => {
let results = null;
if (hits) {
results = [...hits].map((item) => {
const streamProps = {};

if (item._updated) {
streamProps._updated = item._updated;
} else if (item._deleted) {
streamProps._deleted = item._deleted;
}

// no need to mutate the data! below

const data = highlightResults(item);

return {
_id: data._id,
_index: data._index,
...data._source,
...streamProps,
};
});
}
return results;
};
```

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。