gpt4 book ai didi

lucene - Lucene如何使用引号和通配符

转载 作者:行者123 更新时间:2023-12-03 13:52:10 25 4
gpt4 key购买 nike

当我在lucene中搜索荷兰单词bieten时,它们之间的区别是什么:使用DutchAnalyzer并允许使用通配符时的bieten"bieten""*bieten*"*bieten*

因为到目前为止,我可以在解析器语法中找到引号,所以引号只是用于处理空格,所​​有单词始终像它们周围的通配符一样被搜索。

我之所以问这个问题,是因为我发现,通过使用DutchAnalyzer,所有单词在输入索引之前都会先去除其复数形式的 strip 。在我的情况下,这意味着biet存储在索引中而不是bieten。
当使用bieten或“bieten”或“bieten”搜索时,它还会将查询修改为biet。
但是,当我使用*bieten*时,查询不会更改,而是保持复数形式。这没有任何结果。
所以

  bieten   -->> biet 
"bieten" -->> biet
"*bieten*" -->> biet
*bieten* -->> *bieten*

为什么最后一次搜索会转换为与其他搜索不同的查询。

Queryparser语法: 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”,但不会进行分析,因此不会与分析后术语“biet”匹配。
  • 关于lucene - Lucene如何使用引号和通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797085/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com