返回主页

查询语法

此页面概述了可用的查询语法,从“基本”到“高级”。查询语法由DocFetcher底层搜索引擎Apache Lucene提供,并在Lucene的查询语法页面上以更技术的方式进行描述。

布尔运算符

DocFetcher支持布尔运算符ORANDNOT。如果单词连接没有布尔运算符,DocFetcher默认将它们视为与OR连接。如果您不喜欢,可以转到preferences并将“AND”设置为默认值。

而不是“OR”,“AND”和“NOT”,你也可以分别使用||&&'-'(减号)。您可以使用括号对某些表达式进行分组。这里有些例子:

查询 结果文件包含......
dog OR cat either dog, or cat, or both
dog AND cat both dog and cat
dog cat (by default equivalent to the query dog OR cat)
dog NOT cat dog, but not cat
-dog cat cat, but not dog
(dog OR cat) AND mouse mouse, and either dog or cat, or both

搜索不区分大小写

DocFetcher不区分小写和大写字符,因此,如果输入的单词完全小写,或完全大写,或两者兼而有之,则无关紧要。唯一的例外是关键字“OR”,“AND”,“NOT”和“TO”,它们必须始终以大写形式输入。(对于TO关键字,请参阅下面的'范围搜索'部分。)

短语搜索和必需条款

要搜索短语(即单词序列),请将短语放在双引号中。要指示要搜索的文档必须包含特定单词,请在单词前面加上“+”。当然,您可以将这些结构与布尔运算符和括号组合在一起。再举一些例子:

查询 结果文件包含......
"dog cat mouse" the words dog, cat and mouse, in that particular order
+dog cat definitely dog, and maybe also cat
"dog cat" AND mouse the phrase dog cat, and the word mouse
+dog +cat (equivalent to the query dog AND cat)

通配符

问号('?')和星号('*')可用于表示某些字符未知。问号代表一个未知字符,而星号代表零个或多个未知字符。例子:

查询 结果文件包含......
luc? lucy, luca, ...
luc* luc, lucy, luck, lucene, ...
*ene* lucene, energy, generator, ...

注意:如果将通配符用作单词的第一个字符,则搜索的平均速度往往较慢。这是由于索引的结构如何:就好像你试图查找某人的电话号码,而你只知道该人的名字。因此,在上面的例子中,搜索*ene*可能比其他搜索慢,因为*ene*以通配符开头。

模糊搜索

模糊搜索允许您搜索与给定单词相似的单词。例如,如果你搜索roam~,DocFetcher会找到包含foamroams等单词的文档。

此外,您可以在0和1之间附加相似性阈值,如下所示:roam~0.8。阈值越高,返回的匹配的相似性越高。省略阈值与使用默认值0.5相同。

邻近搜索

通过邻近搜索,您可以找到彼此相距特定距离的单词。要进行邻近搜索,请在短语的末尾加上波浪号('〜'),后跟距离值。— 请注意,这在语法上与模糊搜索类似。例如,要搜索包含“维基百科”和“lucene”的文档,请在10个单词内输入,输入:"wikipedia lucene"~10

提升条款

您可以通过为单词指定自定义权重来影响结果的相关性排序。示例:如果输入dog^4 cat而不是dog cat,则包含dog的文档将获得更高的分数,因此更接近结果的顶部。

虽然提升因子必须为正,但它可以小于1(例如0.2)。如果未指定增强因子,则使用默认值1。

现场搜索

默认情况下,DocFetcher将搜索它能够提取的所有文本数据,即文档的内容,文件名和元数据。但是,您也可以将搜索限制为文件名和/或某些元数据字段。例如,要搜索标题包含“wikipedia”的文档,请输入:title:wikipedia。这可以与短语搜索相结合,例如title:"dog cat",或括号,例如title:(dog cat)。事实上,如果你省略引号和括号,只有dog将匹配标题,而不是cat

哪些字段可用通常取决于文档格式,但您可以将其用作经验法则​​:

范围搜索

DocFetcher允许在*两个其他单词之间搜索按字典顺序排列的单词。例如,“beta”这个词位于“alpha”和“gamma”之间。因此,如果要列出包含alphagamma之间单词的所有文档,请输入:[alpha TO gamma]

使用方括号时,范围查询为包含,即结果中包含“alpha”和“gamma”。要进行exclusive range搜索,请使用大括号:{alpha TO gamma}

您可以按如下方式组合范围搜索和字段搜索:title:{alpha TO gamma}。这会将范围搜索限制为标题字段。