邻近检索(单词距离检索)
邻近检索是指,即使短语中的单词没有紧挨在一起,只要它们的位置相互靠近,也能检索到相应文档的方法。当要查找的单词之间可能夹有其他词语时,该方法非常有用。
使用方法
用双引号将单词括起来,并在右侧引号后面添加”~”和数字。
例如,按如下方式输入,可以检索”Fess”与”检索”之间距离在 3 以内的文档。
数字表示单词之间允许的位置移动次数的最大值(详见下文”距离的计算方式”)。数字越大,允许单词相隔得越远。
也可以指定字段进行邻近检索。下面的示例将检索 title 字段。
如果省略数字,仅指定”~”(例如 "Fess 检索"~),则按要求单词相邻的普通短语检索处理。如果指定小数,小数部分将被舍去(~2.5 按 ~2 处理)。
也可以与权重(boost)组合使用。下面的示例对邻近检索应用 2 倍权重(请参见 提升检索)。
距离的计算方式
数字表示单词之间允许的位置移动次数的最大值。它以目标字段的分析器生成的词元(token)为单位计数,而不是字符数或以空格分隔的单词数。对于英文文本,大致相当于词语之间夹着的单词数。分析时作为停用词被去除的单词也会被计入。
单词的顺序可以不同,但顺序颠倒时需要更大的数字。例如,包含”quick brown fox”的文档可以匹配
"quick fox"~1,但要匹配"fox quick",则需要~3或更大的数字。
中文等 CJK 文本
对于中文、日语、韩语等 CJK 文本,计算距离的单位因字段而异。
在 title、content 等通用字段中,距离接近于单词之间的字符数。
在各语言专用字段中,以形态素(词素)为单位计数,被去除的助词等也会被计入。
因此,请用空格分隔单词,并将数字指定得宽松一些。
不含空格的字符串(例如 "大阪好吃"~10)在通用字段中会作为一个连续的字符串进行匹配,因此可能无法按预期作为单词之间的邻近检索工作。请用空格分隔单词。距离无法精确换算为字符数,因此建议先指定较大的数字,再根据检索结果逐步缩小。
相关主题
模糊检索 - 模糊检索
提升检索 - 提升检索
字段指定检索(按标题、URL 等缩小范围) - 字段指定检索
特殊字符 - 特殊字符与转义