solr - 使用带有 solr 的分析器时无法排序
问题描述
我正在尝试使用通配符搜索,它有效,但排序不是。我的 solr 架构文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<schema name="addressByFilters" version="1.5">
<types>
<fieldType class="org.apache.solr.schema.TextField" name="TextField">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ReversedWildcardFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
</types>
<fields>
<dynamicField indexed="true" multiValued="false" name="address*" type="TextField"/>
<field indexed="true" multiValued="false" name="address_code" stored="true" type="TextField"/>
</fields>
</schema>
当我用新的分析器更改上面的分析器时,排序是可行的,但通配符搜索不是。
<fieldType class="org.apache.solr.schema.TextField" name="TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我的 solr 查询是:
solr_query = ' { "q" : "address1:*Test\\ ace*", "sort" : "address_code asc", "start":"0", "useFieldCache":true }' limit 100;
我该如何解决?太感谢了
解决方案
使用不同的字段进行排序和搜索。当您遇到这样的情况时,这特别有用,其中排序所需的处理与搜索所需的处理不同。
使用copyField
指令在两个字段中获取相同的内容。
<copyField source="address_code" dest="address_code_sort" />
推荐阅读
- javascript - 文本动画在 iOS 浏览器上不起作用
- php - Laravel 8 ErrorException:尝试访问 null 类型值的数组偏移量
- java - MockRestServiceServer 测试通过 Multipart-formdata 发送文件上传
- python - 以这种方式使用自动调用 __init__ 是否安全?
- vb.net - Visual Basic 未写入 SQL 后端
- r - 等效于 webdriver.Chrome for RSelenium
- javascript - 如何在 JavaScript 中循环这个对象?
- windows - 如何存储 Dir 和 findStr 导致批处理文件中的变量
- spring-boot - Spring Boot Repository 返回相同的值
- javascript - 为什么 this.setState() 在构造函数中不起作用?