当前位置: 首页 > 面试题库 >

Lucene邻近搜索包含两个以上单词的短语

李安歌
2023-03-14
问题内容

Lucene的手册已经清楚地解释了对包含两个单词的短语进行接近搜索的含义,"jakarta apache"~10例如
http://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Proximity Searches

但是,我想知道搜索"jakarta apache lucene"~10到底能做什么?是否允许相邻的单词最多相隔10个单词,或者所有的单词对都是这样?

谢谢!


问题答案:

斜率(接近度)的作用类似于编辑距离(请参阅参考资料PhraseQuery.setSlop)。因此,这些条款可以重新排序或添加额外的条款。这意味着接近度将是添加到整个查询中的最大术语数。那是:

"jakarta apache lucene"~3

将匹配:

  • “雅加达lucene apache”(距离:2)
  • “这里雅加达多余的话是Apache Lucene”(距离:3)
  • “雅加达一些词阿帕奇分隔lucene”(距离:3)

但不是:

  • “ lucene jakarta apache”(距离:4)
  • “雅加达这里多余的单词apache lucene”(距离:5)
  • “雅加达一些话,阿帕奇进一步分隔了lucene”(距离:4)

有些人对以下内容感到困惑:

“ lucene jakarta apache”(距离:4)

简单的解释是,交换条款需要进行两次修改,因此:

  1. 雅加达apache lucene(距离:0)
  2. 雅加达lucene apache(首次替换,距离:2)
  3. lucene jakarta apache(第二次互换,距离:4)

更长但更准确的解释是,每次编辑都允许将术语移动一个位置。掉期的第一步是将两个条款相互叠加。牢记这一点说明了为什么可以将三个术语的任何集合重新排列为不大于4的任何顺序。

  1. 雅加达apache lucene(距离:0)
  2. 雅加达[apache,lucene](距离:1)
  3. [雅加达,阿帕奇,Lucene](全部转置在同一位置,距离:2)
  4. lucene [雅加达,阿帕奇](距离:3)
  5. lucene雅加达apache(距离:4)


 类似资料:
  • 问题内容: 我正在尝试使用Apache Lucene创建可搜索的电话/本地业务目录。 我有街道名称,公司名称,电话号码等字段。我遇到的问题是,当我尝试按街道名称中包含多个单词(例如“新月”)的街道进行搜索时,没有返回结果。但是,如果我尝试仅用一个词(例如“新月”)进行搜索,那么我会得到所有想要的结果。 我正在使用以下索引数据: 我的搜索是这样的: 我尝试过将通配符查询替换为短语查询,首先将整个字符

  • 问题内容: 应用程序如何执行邻近搜索?例如,用户输入邮政编码,然后应用程序按距离排序列出20英里内的所有企业。 我想在PHP和MySQL中构建类似的东西。这种方法正确吗? 获取我感兴趣的位置的地址并将其存储在数据库中 使用Google的地理编码服务对所有地址进行地理编码 编写包含Haversine公式的数据库查询以进行邻近搜索和排序 这个可以吗?在第3步中,我将计算每个查询的接近度。有一个PROX

  • 本文向大家介绍solr 邻近搜索,包括了solr 邻近搜索的使用技巧和注意事项,需要的朋友参考一下 示例 name:"john doe"~1 搜索特定术语距离(〜1)内的多个术语,i.e将查找包含john匿名doe而不包含john第二名doe的文本

  • 问题内容: 我想搜索包含许多单词的字符串,并检索与其中任何一个匹配的文档。我的索引方法如下: 这是我的搜索方法。我不想寻找特定的词组,但是其中的任何单词。用于搜索的分析器与用于索引的分析器相同。 我是Lucene的新手。有人可以帮我吗? 问题答案: 使用会精确地尝试将短语“单词列表”与短语坡度0匹配。 如果要匹配单词列表中的 任何 术语,可以使用: 或者,您也可以使用,以便您可以要求查询词的数量的

  • 我正在努力在我们的应用程序中集成Lucene。Lucene目前正在工作,例如当我搜索“上传”时,文档中有一些叫做“上传”的文本,那么它就工作了,但是当我搜索“上传”时,那么它就不工作了。有什么想法吗? 代码: 谢谢你。

  • 我试图用一个词作为查询来查找匹配项,但它似乎找不到。我正在使用标准分析仪,但找不到准确的结果。 我的索引文档是: 如果使用通配符查询: 它会返回内容:“敏捷的棕色狐狸跳过懒惰的狗” 如果使用术语查询: 它会返回内容:“敏捷的棕色狐狸跳过懒惰的狗” 现在,我想用“狐狸”作为我的新名词 但是我不知道哪个是正确的查询,或者如何做。我已经尝试了QueryParser、TermQuery和MultiPhra