首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对精确术语进行晒黑查询

如何对精确术语进行晒黑查询
EN

Stack Overflow用户
提问于 2012-09-21 09:16:39
回答 1查看 356关注 0票数 0

尝试精确搜索"11000060K2“

代码语言:javascript
复制
    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) )

返回:

代码语言:javascript
复制
param start    value 0 
param q    value activityemail:11000060K2 
param rows    value 1000 

以及一堆与其他术语相匹配的结果。

我希望它只返回与11000060K2匹配的文档,查询返回/看起来像这样:

代码语言:javascript
复制
param q    value activityemail:"11000060K2"

请告诉我我做错了什么。

EN

回答 1

Stack Overflow用户

发布于 2012-11-30 11:30:29

如何实现这一点将取决于您的activityemail模式配置( Solr schema configuration,schema.xml),特别是与Solr字段关联的字段类型。目前,如果您收到多个返回的结果,这可能是因为给定字段类型上的过滤器/分析器导致了多个匹配。Solr的solr.StrField字段类听起来是您的字段的最佳选择,因为此类型字段的值将逐字存储,并且查询将精确匹配。

如果您已经将该字段用于其他目的,则可以考虑创建一个仅用于此目的的新字段。

因此,在schema.xml中包含此字段将引入一个名为string的字段类型

代码语言:javascript
复制
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />

如果您遵循了Solr的默认安装中包含的示例,那么您可能已经有了这样一种字段类型。您的字段定义应该类似于:

代码语言:javascript
复制
<field name="activityemail" type="string" ... />

其中省略号表示与该字段相关联的各种其他选项。

在重新启动Solr并重新索引文档之后,只需使用您提到的字符串即可查询此字段:

代码语言:javascript
复制
from solr import SolrConnection
term = "11000060K2"
solr_conn = SolrConnection()
scoreDocs = solr_conn.si.query(activityemail=term).execute()
print scoreDocs.result.docs
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12523065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档