我有一个Solr
索引,其中包含10个字段。它们在下面给出。
firstname, lastname, middlename, dob, gender, phone, email, address, city, state
索引由大约10 M条记录组成。我正在尝试为某些传入记录找到最佳匹配。假设其中一个这样的传入记录如下所示。
John, Smith, P, 19980923, M, 9896574300, john@jj.com, James Street, Houston, TX
所以下面给出了我的Solr查询。
firstname:John OR lastname:Smith OR middlename:P OR dob:19980923 OR gender:M OR phone:9896574300 OR email:john@jj.com OR address:"James Street" OR city:Houston OR state:TX
问题在于,即使我将结果集限制为仅前100位,查询也需要花费时间。这是因为大多数记录的状态值为TX,而城市也为休斯顿,因此Solr需要花时间对所有这些记录进行排序和排序。
我的目标是减少Solr查询返回的结果数量。所以首先我想使用下面的查询
firstname:John OR lastname:Smith OR middlename:P OR dob:19980923 OR phone:9896574300 OR email:john@jj.com OR address:"James Street"
在上述情况下,它仅返回最少的记录数,最重要的是,我想按以下方式运行实际查询,以便它在顶部返回最相关的记录
firstname:John OR lastname:Smith OR middlename:P OR dob:19980923 OR gender:M OR phone:9896574300 OR email:john@jj.com OR address:"James Street" OR city:Houston OR state:TX
是否可以在单个查询中实现?使用OR条件可能会提取所有记录,因此我想首先根据几个字段的值仅获取最小数量的记录,然后在其上面应用实际查询