我想要按匹配代币位置排序的搜索结果文档
示例:我有以下文档:
1. indian institute of technology
2. cultural arts institute
3. institute of Management
4. institute of Arts
search query : ins*
localhost:6983/solr/ts/select?fl=name&indent=true&q.op=OR&q=name%3Ains*
Expected response :
3. institute of Management ----> (institute position ->1)
4. institute of Arts -----> (institute position ->1)
1. indian institute of technology --> (institute position ->2)
2. cultural arts institute ------> (institute position ->3)
文件:托管架构
<fieldType name="single_keyword" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Debug reference :
http://localhost:6983/solr/ts/select?fl=name&indent=true&q.op=OR&q=name%3Ains*&debug=true
"debug": {
"rawquerystring": "name:ins*",
"querystring": "name:ins*",
"parsedquery": "name:ins*",
"parsedquery_toString": "name:ins*",
"explain": {
"institute_187": "n1.0 = name:ins*n",
"institute_188": "n1.0 = name:ins*n",
"institute_189": "n1.0 = name:ins*n",
"institute_1036": "n1.0 = name:ins*n",
"institute_1037": "n1.0 = name:ins*n",
"institute_2027": "n1.0 = name:ins*n",
"institute_2028": "n1.0 = name:ins*n",
"institute_2029": "n1.0 = name:ins*n"
},
"QParser": "LuceneQParser",
"timing": {......}}}
我在autoSugest中尝试过,但它不适合我的用例,使用autoSugest的缺点是:无法对多个值和字段运行筛选器,无法在响应时返回多个字段
可能有一种更简单的方法来实现您想要的,但这肯定可以使用自定义记分器来处理。这个博客解释了创建自定义记分器的过程,并概述了其他角度,通过这些角度你可以解决这个问题