Solr返回更多的值

问题描述 投票:0回答:1

使用Django 2.2.7, Python 3.6.9, PySolr 3.8.1, DJANGO Haystack 2.8.1。

haystack_conn = {}
search_engine = 'solr'
if search_engine == 'whoosh':
    haystack_conn = {
        'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
        'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'),
    }
elif search_engine == 'solr':
    haystack_conn = {
        'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
        'URL': 'http://127.0.0.1:8983/solr/bsd',
    }
elif search_engine == 'elastic_search':
    haystack_conn = {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'artifacts',
    }

HAYSTACK_CONNECTIONS = {
    'default': haystack_conn,
}


HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 10

当我搜索ios时,我得到250个结果。当我搜索ios 10时,我得到500个结果,虽然我应该得到更少的结果......大约90个。

django solr
1个回答
1
投票

对你的字段artifact_name使用如下的字符串类型。

<fieldType class="solr.StrField" name="string" omitNorms="true" sortMissingLast="true" />

(以上一行必须在你的schema.xml中。)

<field name="artifact_name" type="string" indexed="true" stored="true" multiValued="false" />

或者你也可以有另一种方式,像下面这样。

<fieldType name="customFieldType" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
  </analyzer>    
</fieldType>

<field name="artifact_name" type="customFieldType" indexed="true" stored="true" multiValued="false" />

0
投票

如果以后有人搜索这个

在solrconfig.xml中,我添加了以下内容,这个解决方案对我来说是有效的。

<requestHandler name="/select" class="solr.SearchHandler">
    <!-- default values for query parameters can be specified, these
      will be overridden by parameters in the request
    -->
    <lst name="defaults">
        <str name="df">text_en</str>
        <str name="q.op">AND</str>
    </lst>
</requestHandler>
© www.soinside.com 2019 - 2024. All rights reserved.