【问题标题】:Lucene Based Searching基于 Lucene 的搜索
【发布时间】:2012-07-28 14:50:58
【问题描述】:

我在基于 Lucene 的搜索中遇到问题。我设计了一个包含五个字段的文档。考虑该文档是带有 addressline1、addressline2、city、state 和 pin 的 Address。如果要执行搜索,则搜索已在所有字段中完成,因此我使用的是布尔术语查询。因此将检索结果。现在我不仅要响应响应,还要响应匹配字段。例如,如果城市字段与搜索匹配,那么我应该响应城市匹配搜索以及实际搜索响应。是否有任何 lucene api 来适应这个?

【问题讨论】:

  • 你的意思是这样的:stackoverflow.com/a/11697341/465710
  • 不,我不是在询问联接。该文档如下所示, DOcument { Field firstName, Field middleName;} 所以为了搜索所有字段,我使用这样的布尔术语查询,Query q= new BooleanQuery().add(new TermQuery("FirstName","name"),真的); q.add(new TermQuery("MiddleName,"name");。所以结果会很明显。但是响应应该是 nameSomeOtherNamefirstName ------>这个怎么确定?
  • 您想知道哪个字段与查询匹配?

标签: lucene


【解决方案1】:

AFAIK 没有简单的解决方案可以找出与查询匹配的字段。

您的选择是:

  1. 尝试使用命中荧光笔(它知道匹配发生的位置,但在大型结果集上会明显变慢)
  2. 摆弄 IndexSearcher 的解释方法
  3. 构建您的自定义解决方案

Hit highlighter experience and workaround findings.

恕我直言,自己实现这一点应该不难,因为 Lucene 在某个时间点肯定知道哪个字段产生了匹配项,但它会在组成您的响应时将该信息作为不必要的权重丢弃。
我偶然发现了this custom approach

Try to find more resources on search-lucene.com, the best Lucene/Solr related search engine.

【讨论】:

  • Mbonaci,这个解决方案最适合我的问题,mail-archives.apache.org/mod_mbox/lucene-java-user/201207.mbox/… 我担心的是,对布尔查询进行二进制分析并将这些结果与父结果结合起来。
  • 我很高兴这些信息有所帮助。也许您应该尝试联系 Ashish Jaen,看看他最终使用什么来解决这个问题。找出他的邮件地址应该不难。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-25
  • 2013-07-17
  • 2012-10-22
  • 1970-01-01
  • 2015-06-03
相关资源
最近更新 更多