我有一个设置,在solr中我有两个索引:product_code和title。product_code使用StrField, title使用带有DoubleMetaphone的TextField。
我有一个搜索框,供用户输入产品代码或免费文本进行标题搜索。我目前使用dismax和做qf=product_code标题。我遇到的问题是,一旦应用了DoubleMetaphone,通常产品代码(例如LC12345)可能会匹配标题中的单词。
所以我想做的是构造一个查询,它首先将查询词应用到product_code索引,只有当没有匹配时,才将查询词应用到标题索引。有没有一种方法可以做到这一点,而不必对Solr进行两次单独的查询?这是一个AJAX"实时搜索",所以我想保持延迟到最小,所以不想做两个单独的查询Solr。
马特
答案是否定的。如果我没记错的话,你需要。q=X,如果答案= 0 q=Y。Solr中没有这样的函数。即使有,solr也有必要查询索引两次,这与使用两次查询是一样的。
我建议你只用一个查询(如果真的有必要的话)来改进你的应用程序,那就是使用查询助推器。如果你设置像
product_code:query^5 and title^1
在solrconfig中用于索引数据。这将使product_code结果在顶部,标题在底部附近。在没有product_code的情况下,将只有标题结果。
我希望这对你有帮助