我正在使用 NGramFilterFactory。我的架构如下所示
<fieldType name="c_text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="255"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="parentId" type="string" indexed="true" stored="true"/>
<field name="data_s" type="c_text" indexed="true" stored="true"/>
<field name="email" type="c_text" indexed="true" stored="true"/>
<field name="receivedDate" type="tdate" indexed="true" stored="true"/>
我想在 data_s 字段上进行 exatc 短语搜索,例如“Hello World”,但无法做到。如果我给
data_s:hello world
它返回所有有 hello 或 world 或两者都有的记录。如果我给
data_s:"hello world"
它什么也不返回。
我怎样才能对此进行精确的短语搜索。我还需要搜索像“ello”这样的部分文本,这就是我使用 NGramFilterFactory 的原因。
所以我的要求是对确切的短语和部分文本进行搜索。