Lucene 解决方案:在多个字段中搜索,但如果找到匹配的文档,则停止搜索

Lucene 解决方案:在多个字段中搜索,但如果找到匹配的文档,则停止搜索,lucene,solr,Lucene,Solr,我想在Solr中搜索多个字段。 (我知道复制字段的概念,也知道(e)Demax搜索处理程序。) 因此,我有一个字段的有序列表,我希望搜索这些术语。 1.)SKU 2)姓名 3.)说明 4.)总结 等等 现在,当查询匹配一个术语时,比如说在SKU字段中,我想要这个匹配项,而不需要在后续字段中进行进一步搜索 仅当第一个字段(SKU字段)中根本没有匹配项时,才应使用第二个字段(在本例中为“名称”),依此类推 这对Solr有可能吗? 我是否必须为此实现自己的Lucene搜索处理程序 欢迎任何意见 谢谢,

我想在Solr中搜索多个字段。 (我知道复制字段的概念,也知道(e)Demax搜索处理程序。)

因此,我有一个字段的有序列表,我希望搜索这些术语。 1.)SKU 2)姓名 3.)说明 4.)总结 等等

现在,当查询匹配一个术语时,比如说在SKU字段中,我想要这个匹配项,而不需要在后续字段中进行进一步搜索

仅当第一个字段(SKU字段)中根本没有匹配项时,才应使用第二个字段(在本例中为“名称”),依此类推

这对Solr有可能吗? 我是否必须为此实现自己的Lucene搜索处理程序

欢迎任何意见

谢谢,,
Bernhard

我认为您的案例需要执行4种不同的搜索。若你们实现了你们自己的SearchHandler,你们可以避免在4个不同的请求中搜索结果累积的惩罚。这意味着,您将发送一个查询,自定义SearchHandler将执行4次搜索并准备一个结果集。

如果我的猜测是正确的,您希望根据字段的顺序对结果进行排序。如果是这样,那么您可以使用标准查询,如

q=sku:(查询)^4或姓名:(查询)^3或描述:(查询)^2或摘要:(查询)

这将根据字段的顺序对结果进行排序


希望是有帮助的。

我喜欢这个想法,但它不符合OP的所有要求。谢谢。我将尝试这种方法。如果我深入研究源代码并进行编码,就会出现一个新问题:我应该将其实现为LuceneSearchHandler还是SolrJava类之上?优点/缺点是什么?非常感谢。如果您已经在使用Solr,那么在Solr API之上构建应该更容易、侵入性更小。然后,您可以配置自定义搜索处理程序的附加seeting以及Solr配置的其余部分。