查询语法
此页面概述了可用的查询语法,从“基本”到“高级”。查询语法由DocFetcher底层搜索引擎Apache Lucene提供,并在Lucene的查询语法页面上以更技术的方式进行描述。
布尔运算符
DocFetcher支持布尔运算符OR
,AND
和NOT
。如果单词连接没有布尔运算符,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会找到包含foam
和roams
等单词的文档。
此外,您可以在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
。
哪些字段可用通常取决于文档格式,但您可以将其用作经验法则:
- Files: filename, title, author
- Emails: subject, sender, recipients
范围搜索
DocFetcher允许在*两个其他单词之间搜索按字典顺序排列的单词。例如,“beta”这个词位于“alpha”和“gamma”之间。因此,如果要列出包含alpha
和gamma
之间单词的所有文档,请输入:[alpha TO gamma]
。
使用方括号时,范围查询为包含,即结果中包含“alpha”和“gamma”。要进行exclusive range搜索,请使用大括号:{alpha TO gamma}
您可以按如下方式组合范围搜索和字段搜索:title:{alpha TO gamma}
。这会将范围搜索限制为标题字段。