我如何配置这样的fileds索引/分析器属性来实现这一目标? 使用我当前的配置,我可以搜索,但结果不会返回alhanumeric,我无法搜索符号“ - ”。
该字段应处理具有空格和破折号的值,如上例所示。
这是我基于gogoled的一些信息对该字段的当前配置:
<!-- A text field that only splits on whitespace for exact matching of words -->
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
</analyzer>
</fieldType>
<!-- A text type for English text where stopwords and synonyms are managed using the REST API -->
<fieldType name="managed_en" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ManagedStopFilterFactory" managed="english" />
<filter class="solr.ManagedSynonymFilterFactory" managed="english" />
</analyzer>
</fieldType>
感谢您的协助
答案 0 :(得分:0)
默认情况下,结果由分数返回,分数是使用一系列不同因素计算得出的。如果您想要一个简单的字母数字排序,请在查询中添加&sort=sort_fieldname
。
请注意,您不希望按生成多个令牌的TextField(您的示例中为text_ws
和managed_en
而对TextFields进行排序)(因此WhitespaceTokenizer
和{{1}对于排序字段,如果您需要分析器或过滤器,请使用StandardTokenizer
。如果您不需要对该字段执行任何操作(例如小写等),请使用KeywordTokenizer
代替,因为它是逐字存储的。
我猜测下一个问题是“但是......我需要提交两次数据吗?”所以不,在你的模式中使用StrField
来发送进入{{1的值} copyField
很好,并为该字段应用了不同的类型/分析器链。在Lucene(以及扩展的Solr)中,您可以添加具有不同链的字段来解决特定问题。排序就是这样一个问题,与实际搜索有所不同。