diff --git a/120_Proximity_Matching/00_Intro.md b/120_Proximity_Matching/00_Intro.md old mode 100755 new mode 100644 index d9348c8..3ccc952 --- a/120_Proximity_Matching/00_Intro.md +++ b/120_Proximity_Matching/00_Intro.md @@ -1,11 +1,20 @@ + +## 模糊匹配 + +一般的全文检索方式使用 TF/IDF 处理文本或者文本数据中的某个字段内容。将字面切分成很多字、词(word)建立索引,match查询用query中的term来匹配索引中的字、词。match查询提供了文档数据中是否包含我们需要的query中的单、词,但仅仅这样是不够的,它无法提供文本中的字词之间的关系。 + + + +举个例子: + +* 小苏吃了鳄鱼 +* 鳄鱼吃了小苏 +* 小苏去哪儿都带着的鳄鱼皮钱包 +用`match`查询`小苏 鳄鱼`,这三句话都会被命中,但是`tf/idf`并不会告诉我们这两个词出现在同一句话里面还是在同一个段落中(仅仅提供这两个词在这段文本中的出现频率) + + + + +理解文本中词语之间的关系是一个很复杂的问题,而且这个问题通过更换query的表达方式是无法解决的。但是我们可以知道两个词语在文本中的距离远近,甚至是否相邻,这个信息似乎上能一定程度的表达这两个词比较相关。 + +一般的文本可能比我们举的例子长很多,正如我们提到的:`小苏`跟`鳄鱼`这两个词可能分布在文本的不同段落中。我们还是期望能找到这两个词分布均匀的文档,但是我们把这两个词距离比较近的文档赋予更好的相关性权重。 + +这就是段落匹配(_phrase matching_)或者模糊匹配(_proximity matching_)所做的事情。 + + + + +【**提示** 】 + +这一章,我们会用之之前在< match-test-data, `match` query >中使用的文档做例子。 diff --git a/SUMMARY.md b/SUMMARY.md index 0b11981..3c9866c 100755 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -121,7 +121,7 @@ * [全字段查询](110_Multi_Field_Search/45_Custom_all.md) * [跨字段查询](110_Multi_Field_Search/50_Cross_field.md) * [精确查询](110_Multi_Field_Search/55_Not_analyzed.md) -* [Proximity Matching](120_Proximity_Matching/00_Intro.md) +* [模糊匹配](120_Proximity_Matching/00_Intro.md) * [Phrase matching](120_Proximity_Matching/05_Phrase_matching.md) * [Slop](120_Proximity_Matching/10_Slop.md) * [Multi value fields](120_Proximity_Matching/15_Multi_value_fields.md)