Lucene 如何使用引号和通配符
How does Lucene work with quotes and wildcards
当我在 lucene 中搜索荷兰语单词 bieten 时,它们之间的区别如下:使用 DutchAnalyzer 时 bieten
、"bieten"
、"*bieten*"
和 *bieten*
并允许前导通配符?
因为据我所知,在你的解析器语法中,引号只是用来处理空格,所有的词总是像它们周围的通配符一样被搜索。
我问这个问题的原因是因为我发现通过使用 DutchAnalyzer,所有单词在进入索引之前都会去掉其复数形式。在我的例子中,这意味着 biet 存储在索引中而不是 bieten。
当使用 bieten 或 "bieten" 或 "bieten" 进行搜索时,它还会将查询修改为 biet.
但是当我使用 *bieten*
时,查询不会改变并保持复数形式。没有给出任何结果。
所以
bieten -->> biet
"bieten" -->> biet
"*bieten*" -->> biet
*bieten* -->> *bieten*
为什么最后一个搜索被翻译成与其他搜索不同的查询。
查询解析器语法:https://lucene.apache.org/core/2_9_4/queryparsersyntax.html
Lucene 截图:http://oi63.tinypic.com/1z5krdg.jpg
查询解析器不分析通配符、正则表达式和模糊查询,这就是它们不同的原因。
绝对不会搜索带有通配符的单词。查询 *bieten*
旨在匹配 "xxbietenxx" 之类的内容。不过,在句子中查找单词 不 涉及通配符。这就是分析的目的。它将文本拆分为单词项。
解释每个查询:
bieten
- 简单的术语查询。搜索给定的词。
"bieten"
- 词组查询。分析并找到给定的多术语短语。在这种情况下,短语是一个术语,因此与术语查询相同。
"*bieten*"
- 同样,短语查询。 不是 任何方式的通配符查询。不能在短语中使用通配符。分析器将删除标点符号,使其与上一个相同。
*bieten*
- 通配符查询。这将匹配 "bietenxx"、"xxbieten" 和 "xxbietenxx",但不会被分析,因此不会匹配 post-分析项 "biet"。
当我在 lucene 中搜索荷兰语单词 bieten 时,它们之间的区别如下:使用 DutchAnalyzer 时 bieten
、"bieten"
、"*bieten*"
和 *bieten*
并允许前导通配符?
因为据我所知,在你的解析器语法中,引号只是用来处理空格,所有的词总是像它们周围的通配符一样被搜索。
我问这个问题的原因是因为我发现通过使用 DutchAnalyzer,所有单词在进入索引之前都会去掉其复数形式。在我的例子中,这意味着 biet 存储在索引中而不是 bieten。
当使用 bieten 或 "bieten" 或 "bieten" 进行搜索时,它还会将查询修改为 biet.
但是当我使用 *bieten*
时,查询不会改变并保持复数形式。没有给出任何结果。
所以
bieten -->> biet
"bieten" -->> biet
"*bieten*" -->> biet
*bieten* -->> *bieten*
为什么最后一个搜索被翻译成与其他搜索不同的查询。
查询解析器语法:https://lucene.apache.org/core/2_9_4/queryparsersyntax.html
Lucene 截图:http://oi63.tinypic.com/1z5krdg.jpg
查询解析器不分析通配符、正则表达式和模糊查询,这就是它们不同的原因。
绝对不会搜索带有通配符的单词。查询 *bieten*
旨在匹配 "xxbietenxx" 之类的内容。不过,在句子中查找单词 不 涉及通配符。这就是分析的目的。它将文本拆分为单词项。
解释每个查询:
bieten
- 简单的术语查询。搜索给定的词。"bieten"
- 词组查询。分析并找到给定的多术语短语。在这种情况下,短语是一个术语,因此与术语查询相同。"*bieten*"
- 同样,短语查询。 不是 任何方式的通配符查询。不能在短语中使用通配符。分析器将删除标点符号,使其与上一个相同。*bieten*
- 通配符查询。这将匹配 "bietenxx"、"xxbieten" 和 "xxbietenxx",但不会被分析,因此不会匹配 post-分析项 "biet"。