我们使用 solrnet 对一组基于文本的文件进行索引和查询。当我们在双引号中使用搜索词并且搜索词带有连字符时,我们需要有关特定搜索案例的帮助。我们正在使用 StandardTokenizerFactory。
架构定义:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
情况1:
- 搜索词:“S-Video”,引用 = true
- Catalina 日志:q=ContentSearch:(\"S-Video\")
- 返回的结果包含 s 和 video 的命中
案例二:
- SearchTerm:“S - Video”,quoted = true,注意连字符周围的空格
- Catalina 日志:q=ContentSearch:("\"S++-+Video\"")
- 返回的结果仅包含 S-Video 的命中(连字符前后没有空格)
案例 2 中的记录是期望的结果,但它应该是通过案例 1 的查询检索到的。不确定我们做错了什么。