按顺序查询Solr索引,在匹配时停止?

时间:2011-07-27 07:30:24

标签: lucene solr dismax

我有一个设置,其中我在solr中有两个索引:product_code和title。 product_code使用StrField,title使用带有DoubleMetaphone的TextField。

我有一个搜索框,供用户输入产品代码或自由文本进行标题搜索。我目前正在使用dismax并执行qf = product_code标题。我遇到的问题是,一旦应用了DoubleMetaphone,产品代码(例如LC12345)可能会匹配标题中的单词。

所以我想做的是构建一个查询,使 first 将查询词应用于product_code索引,并且只有在没有匹配然后的情况下将查询字词应用于标题索引。有没有办法做到这一点,而无需对Solr进行两次单独的查询?这是针对AJAX的“实时搜索”,因此我希望将延迟保持在最低限度,因此不希望对Solr进行两次单独的查询。

-Matt

1 个答案:

答案 0 :(得分:0)

答案是 - 不。 如果我找对你,你需要类似的东西。如果答案= o q = Y,则q = X. Solr中没有这样的功能。即使有必要,solr也需要两次查询索引,这与使用两个查询相同。

我建议你只使用一个查询来改进你的应用程序(如果它确实是nessecary),那就是使用query-booster。如果设置类似

的内容

product_code:查询^ 5和标题^ 1

在索引数据的solrconfig中。这将使您的product_code结果位于顶部,而标题位于底部附近。如果没有product_code,则只有标题结果。

我希望有帮助