查询语法
此页面概述了可用的查询语法,从“基本”到“高级”。查询语法由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}。这会将范围搜索限制为标题字段。