我一直在尝试使用synonym.txt文件和SOLR Lucene开箱即用的SynonymFilterFactory,印度语言(印地语用于POC),但它似乎不适用于英语。< BR />
在堆栈溢出处找到this这引发了一个类似的问题但尚无解决方案。
我已经处理以下事项以支持SOLR的印度语搜索,
1.将浏览器编码更改为UTF-8
2.在Acapche Tomcat Server的server.xml中添加了URIEncodings = UTF-8。
对于POC,我尝试了以下几点,
1.创建一个新的字段类型以支持印地语索引,
<fieldType name="text_hi" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<!-- normalizes unicode representation -->
<filter class="solr.IndicNormalizationFilterFactory"/>
<!-- normalizes variation in spelling -->
<filter class="solr.HindiNormalizationFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_hi.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.HindiStemFilterFactory"/>
</analyzer>
</fieldType>
更新 在经过@Mysterion和@Alexandre Rafalovitch在这篇文章中的回复后,我也尝试删除词干,
<fieldtype name="text_hi_rev" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.WhitespaceTokenizerFactory"/>
</analyzer>
根据创建的字段类型
定义新字段
在synonyms.txt文件中添加以下行,
india,bharat,भारत,हिन्दुस्तान,hindustan
将以下字符串编入索引作为不同的文档,
मैंभारतकारहनेवालाहूँ strongैहिसंदुस्तानकारहनेवालाहूँ strongै india कारहनेवालाहूँ strongै hindustan कारहनेहूँ strongै bharat काररनेहूँ
预期行为:
当我搜索任何关键字 india,bharat,भारत,हिन्दुस्तान,hindustan 时,我应该获得在步骤4中索引的所有文件
实际行为:
1.使用关键字 india,hindustan或bharat 进行搜索时,我会得到以下结果:
strongै india कारहनेवालाहूँ
strongै hindustan कारहनेहूँ
<ै bharat कारहनेहूँ
如果我正在尝试甚至可能的任何指针?如果可能的话,我在这里可能做错了什么?
感谢。
答案 0 :(得分:1)
经过很多令人沮丧的时间和@Mysterion的帮助后,我偶然发现了解决方案。以下是导致决议的两个步骤,