[英]solr facet search truncate words
為法語內容配置了一個solr。 搜索很好,但是當我激活分面搜索時,單詞會以一種特殊的方式被截斷。
所有e都消失了,例如用汽車代替汽車,用蒙塔貢代替蒙塔涅,用手寫筆代替style,homm => homme等。
<lst name="keywords">
<int name="automobil">1</int>
<int name="citroen">1</int>
<int name="minist">0</int>
<int name="polit">0</int>
<int name="pric">0</int>
<int name="shinawatr">0</int>
<int name="thailand">0</int>
</lst
這是查詢q = fulltextfield:champpions&facet = true&facet.field = keywords
關鍵字內容:
<arr name="keywords">
<str>Ski</str>
<str>sport</str>
<str>Free style</str>
<str>automobile</str>
<str>Rallye</str>
<str>Citroen</str>
<str>montagne</str>
</arr>
這是使用的架構:
<fieldtype name="text_fr" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_fr.txt"/>
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" />
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="French"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_fr.txt"/>
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="French"/>
</analyzer>
</fieldtype>
字段def:
如果有人對此有想法...。
感謝您的回答。 問候傑羅姆·朗格
通常,如果要將字段用作構面,則應將其存儲為字符串。
您正在處理標記化和過濾后的字段,因此各個值是關鍵字字段中已處理的單詞。
以上說的都是正確的,我只想添加一個方面。 構面值是索引項,而不是存儲的項。 構面的一種建議是使用字符串類型。 這通常是一個不錯的選擇。 但是有時候您想從某些方面入手。 在這種情況下,您可以使用文本類型,但只能輕視輸入。 在任何情況下,都應避免使用上述的詞干(SnowballPorter)或WordDelimiter。
一個很好的選擇是KeywordTokenizerFactory,您可以使用PatternReplace清理您的術語和輸入,最后進行TrimFilter。 如果您的用戶要查看條款,請不要使用小寫字母。
例如,我的輸入是字母語言代碼。 PatternReplace清除非字母字符,第二個錯誤糾正輸入錯誤:
`
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.PatternReplaceFilterFactory"
pattern="([^a-z])"
replacement=""
replace="all" />
<filter class="solr.PatternReplaceFilterFactory"
pattern="fer|xxx"
replacement="und"
replace="all" />
<filter class="solr.LengthFilterFactory" min="3" max="3" />
</analyzer>
`
玩solr
奧立佛
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.