是否有可行的方法在词干全文字段上进行完全匹配搜索? 我有一个场景,我需要一个字段进行索引和搜索,无论使用何种情况或空格。 即使在索引和查询上都使用KeywordTokenizerFactory,基于完全匹配的所有搜索都停止工作。 有没有办法像字符串字段一样搜索完全匹配,同时使用适用于该字段的海关标记符? 我在下面发布了我正在使用的架构:
<field name="subtipoimovel" type="buscalimpaquery" indexed="true" stored="true" />
<fieldType name="buscalimpaquery" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern=" " replacement="-"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
</analyzer>
的问候, 西尔维奥朱利安尼
答案 0 :(得分:1)
问题在于索引时使用的是KeywordTokenizerFactory,ASCIIFoldingFilterFactory,LowerCaseFilterFactory和PatternReplaceFilterFactory,但在查询时您使用的是KeywordTokenizerFactory。这对于完全匹配不会有效。 您需要将这些视为流水线处理器。您还需要在查询时间内进行“类似”处理。
答案 1 :(得分:0)
正如Srikanth在评论中指出的那样,你应该考虑在两个不同的领域中分割不同类型的术语分析。另请参阅我对功能相似问题的回答:Solr: combining EdgeNGramFilterFactory and NGramFilterFactory。
答案 2 :(得分:0)
显然问题是这个标记器:
“solr.KeywordTokenizerFactory”
我将其更改为StandardTokenizerFactory,现在它可以完全匹配。
我在solr wiki上阅读了KeywordTokenizerFactory的描述,在我看来,为了完全匹配,我应该使用它而不是StandardTokenizerFactory。
有谁知道为什么会这样?