我正在尝试使用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,下面是相同的截图。
答案 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])