尝试精确搜索"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"请告诉我我做错了什么。
发布于 2012-11-30 11:30:29
如何实现这一点将取决于您的activityemail模式配置( Solr schema configuration,schema.xml),特别是与Solr字段关联的字段类型。目前,如果您收到多个返回的结果,这可能是因为给定字段类型上的过滤器/分析器导致了多个匹配。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.docshttps://stackoverflow.com/questions/12523065
复制相似问题