在SOLR自动完成中包含空格的查询字符串没有响应

时间:2018-02-19 14:03:28

标签: solr lucene

我正在尝试使用SOLR自动完成功能,基本上一旦用户键入3个字符,我想显示每个键入的字符的响应。 SOLR版本是6.5.1。以下是我正在使用的配置。

<fieldType name="searchFieldType" class="solr.TextField" positionIncrementGap="100">
            <analyzer type="index">
                <tokenizer class="solr.KeywordTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
                <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" />
            </analyzer>
            <analyzer type="query">
                <tokenizer class="solr.KeywordTokenizerFactory"/>
                <filter class="solr.LowerCaseFilterFactory"/>
            </analyzer>
        </fieldType> 

我有一个样本索引,其字段值如下所示。

"ta", "taj", "tajbacd", "tajabcd", "taj cbad","taj abcd", "taj bcad","taj abcd cbad", "taj abcd abcd","taj abcd bacd", "abcd taj","abcd ta", "random string"

当我正在搜索&#34; taj&#34;时,我得到了预期的结果但是如果我搜索&#34; taj&#34;或者&#34; taj ab&#34;,Solr是没有返回任何结果。你们能帮助我吗?我试图使用Analysis,它显示了ngram,下面是相同的截图。

enter image description here

2 个答案:

答案 0 :(得分:1)

所以,我读得太快了......我的不好。

您能否向我们展示您用来传达此信息的请求?无论是工作的还是不工作的。

顺便说一下,你已经可以解决一件事,如果你只发送3个或更多的字符,你可以改变你的minGramSize =&#34; 1&#34;到minGramSize =&#34; 3。&#34;

答案 1 :(得分:0)

在这种情况下,您可以轻松使用通配符/部分匹配

import csv

with open("mid.dat") as myfile:
    csv_records = csv.reader(myfile)
    list1 = []
    list2 = []
    for row in csv_records:
        list1.append(row[0])
        list2.append(row[1])