Bildiğim kadarıyla, bu var olan SynonymFilterFactory ile bunu yapmanın bir yolu yoktur. Ancak, aşağıdaki davranışları görmek için kullanabileceğiniz bir numaradır.
Alanınızın title
olarak adlandırıldığını varsayalım. Bunun bir kopyası olan başka bir alan oluşturun, title_synonyms
deyin. Şimdi SynonymFilterFactory'nin sadece title_synonyms
için bir analizör olarak kullanıldığından emin olun (bunu iki alan için farklı alan türleri kullanarak yapabilirsiniz - örneğin, text
ve text_synonyms
). Her iki alanda da arama yapın, ancak title
'a title_synonyms
'dan daha yüksek bir artış verin. Eğer dismax
kullanıyorsanız
<copyField source="title" dest="title_synonyms"/>
: Burada
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_synonyms" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_index.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_query.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>
Ve olan örnek alan tanımları:
<field name="title" type="text" stored="false"
required="true" multiValued="true"/>
<field name="title_synonyms" type="text_synonyms" stored="false"
required="true" multiValued="true"/>
Kopya title
alan title_synonyms
için Buraya
örnek alan türü tanımları vardır , bunlara farklı destek verebilir gibi alanlar:
Gerçekten güzel bir fikir! Ama benim durumumda eşanlamlıların gerekli olduğu yaklaşık 10 alanım var ... başka bir çözüm yok ise bunu yapacağız ... solr yamalar vs. – yura
Tüm bu alanlar için aynı eş anlamlılar dosyasını kullanıyorsanız Bunları bir ortak eşanlamlı alana dönüştürün - her alana karşılık gelen bir eşanlamlı alana ihtiyacınız yoktur. –
Fakat tüm alanlara ince taneli ağırlık kullanıyorum. Yani başlık için eşanlamlı açıklama vb eşanlamlı daha önemli. – yura