我正在使用 SOLR 搜索引擎。
几天前,我提出了在给定列上执行类似操作的要求。
例如:
Column name: Name
Content: Stackoverflow is good.
查询是
Name:("*overflow is*")
这个查询应该给我特定 的“Stackoverflow 很好”。因此
该输入参数应被视为一个整体输入。它不应被视为自由文本搜索。它应该像 SQL 中的“like”操作一样工作。
为此我使用此配置。
<fieldtype class="solr.TextField" name="string_wildcards" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldtype>
这个查询没有给我“like”操作所期望的结果。
例如:名称:(“溢出是”)
将搜索为免费文本,而不是像“喜欢”运算符。
它给了我结果
- 什么是溢出。
- 我的名字是ABC
- 什么是溢出
- 堆栈溢出很好。
我的预期结果只有第 4 点,上面的配置给了我所有 4 个结果,这是错误的。
请根据我的要求帮助我正确配置。