带文字的文档 -
ITA NO. 174 OF 2000 (CIVIL MISC. WRIT PETITION (TAX) NO. 223 OF 2000)
搜索文字
CIVIL MISC. WRIT PETITION (TAX) NO. 223 OF 2000
(不会给出上面显示的文件)
使用了Tokenizer -
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s,\.;]+"/>
同时, 提供正确结果的查询
(CIVIL MISC. WRIT PETITION (TAX) NO. 223 OF 2000)
和
ITA NO. 174 OF 2000 (CIVIL MISC. WRIT PETITION (TAX) NO. 223 OF 2000)
搜索字段 -
exact
和
ngram
我需要将括号编入索引并能够被搜索作为包含重要信息(这有效) 但只搜索没有括号的文本并没有给出所需的结果
什么行不通 -
替换括号(影响结果相关性,例如139(1)变为1391)
字段类型文字
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s,\.;]+"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s,\.;]+"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true"/>
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
字段类型ngram
<fieldType name="text_ngram" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.StandardFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<!-- <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="[\d+\(\)]" replacement=""/> -->
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" side="front" />
</analyzer>
</fieldType>
答案 0 :(得分:0)
您需要更改PatternTokenizerFactory
中的模式使用此"/[^a-zA-Z ]/"
或修改您加注的那个&#34;()&#34;进入你的表达。
它会从索引中删除"(" and ")"
并简化您的搜索。
根据您的要求,您可以在文档中使用两个不同的fieldType使用相同的字段两次。
一个字段类型不会有patterfilter工厂,它会使用&#34;()&#34;索引文本。
其他字段类型将具有patternFilter工厂,它将跳过&#34;()&#34;索引..
希望这能解决您的问题。