【发布时间】:2014-08-26 14:07:51
【问题描述】:
我对如何在 Elasticsearch 中索引这些文档有点迷茫。
文档 1
{
text: ['chicken']
}
文档 2
{
text: ['chicken'], [['broth', 'stock']]
}
我需要能够使用“鸡味高汤”或“鸡味肉汤”来查询这些,并且它应该返回具有相同分数的两个文档,因为它们的所有术语都已在输入查询中匹配。 它也不应该返回只有“鸡”作为查询的 doc 2。
基本上,我想知道 'text' 字段中的所有术语都已在查询中的某处找到,并且内部数组(即:'broth' 和 'stock' 就像 OR 子句一样)。
这可能吗?
更新:
我确实找到了一种(繁琐的)方法。我通过将它们的字段组合成短语来保存文档(例如:['chicken stock', 'chicken stock'] for doc 2)。然后我使用输入的每个组合作为短语进行搜索(例如:['chicken', 'chicken flavored', 'chicken flavored balloon', 'chicken balloon', ...]。)
这个解决方案确实给了我想要的结果,但我不禁觉得这是一个可以更优雅地处理的常见情况。感觉就像 ngrams 沿着通往我答案的道路前进,但我无法完全解决。
【问题讨论】:
标签: indexing lucene elasticsearch data-modeling