簡體   English   中英

Solr Facet Search截斷單詞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM