尝试准确搜索" 11000060K2"
from solr import SolrConnection
from sunburnt import RawString
term = "11000060K2"
solr_conn = SolrConnection()
scoreDocs = solr_conn.si.query(activityemail=RawString(term)).paginate(start=0, rows=1000).execute()
params_dict = scoreDocs.params
for key, keyvalue in params_dict:
logging.debug ("param %s value %s " %(key, keyvalue) )
返回:
param start value 0
param q value activityemail:11000060K2
param rows value 1000
一堆与其他条款匹配的结果。
我希望它只返回与11000060K2匹配的文档以及返回/看起来像的查询:
param q value activityemail:"11000060K2"
请告诉我我做错了什么。
答案 0 :(得分:0)
如何实现这一点取决于您的Solr架构配置(schema.xml
),特别是与您的activityemail
字段关联的字段类型。目前,如果您收到多个结果,可能是因为给定字段类型的过滤器/分析器导致多个匹配。 Solr的solr.StrField
字段类听起来像是你的字段的最佳选择,因为这种字段的值将逐字存储,查询将完全匹配。
如果您已将其他字段用于其他目的,则可以考虑为此目的创建一个新字段。
因此,在schema.xml
中包含此内容会引入名为string
的字段类型:
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
如果您已按照Solr默认安装中包含的示例进行操作,那么您可能已经有了这样的字段类型。您的字段定义应如下所示:
<field name="activityemail" type="string" ... />
其中省略号表示与该字段关联的各种其他选项。
重新启动Solr并重新索引文档后,只需使用您提到的字符串查询此字段:
from solr import SolrConnection
term = "11000060K2"
solr_conn = SolrConnection()
scoreDocs = solr_conn.si.query(activityemail=term).execute()
print scoreDocs.result.docs