2016-04-02 48 views
0

Solr 4'ün eş anlamlıları belirli bir eş anlamlılar listesi için iki yönlü olarak döndürmesini istiyorum.Solr iki yönlü 0 karakterleri

Endeksli içeriği

Nice villa front of the sea 
Looking for condo around 2 billions $ 
Superb house with 3 bedrooms 
Flat for sale 

synonyms.txt

#Equivalent synonyms may be separated with commas and give 
#no explicit mapping. In this case the mapping behavior will 
#be taken from the expand parameter in the schema. This allows 
#the same synonym file to be used in different synonym handling strategies. 

villa, house, home, condo, appartement, residence, flat 

schema.xml

Aslında
<analyzer type="index"> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.EnglishPossessiveFilterFactory"/> 
    <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="false"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
</analyzer> 

<analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.EnglishPossessiveFilterFactory"/> 
    <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
</analyzer> 

:

Arama "villa" tüm sonuçları döndürür, ancak Words.txt dosyasında başka bir kelime ararsam, karşılık gelen cümleden başka bir şey bulamıyorum.

yani düz döner:

Flat for sale 

yani ev döner:

Superb house with 3 bedrooms 

ben eşanlamlı tüm kelimeleri (düz, ev, apartman dairesi, vs) "villa" anahtar kelime ile aynı dönmek istiyorum.

+0

eşanlamlı filtre simgeleştiricisine sonra olmalıdır - taşımayı deneyin ve dizgeciklere sahiptir önce ayrı jeton oluşan bir akışı olmaz çünkü o (yardımcı olup olmadığını görmek olmuş). – MatsLindh

cevap

0

Analizör yapılandırmanızla ilgili bir takım sorunlar var.

  • MatsLindh belirttiği gibi
  • LowerCaseFilterSynonymFilter önce gelmelidir "eşanlamlı filtresi tokenizer sonra olmalıdır". Aksi takdirde, örneğinizde, hepsi küçük harfli olmadığından Düz göz ardı edilir.
  • PhoneticFilter, injecttrue olarak ayarlanmış olmalıdır, çünkü artık yalnızca orijinal olanın yerine fonetik belirtecini alıyorsunuz. Bu yapılandırma ile

Dene:

<analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.EnglishPossessiveFilterFactory"/> 
    <filter class="solr.SynonymFilterFactory" 
      synonyms="synonyms.txt" ignoreCase="true" expand="true" /> 
    <filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/> 
    <filter class="solr.PorterStemFilterFactory"/> 
</analyzer> 
+0

Aslında SynonymFilter, ignoreCase = "true" değerine sahip olduğunuzdan, ancak SmallcaseFilter uygulamasından sonra yerleştirmek için yine de küçük harfle çalışmayacaktır. – spyk

+0

Tamam ve sorgu analiz cihazıma ne yazmalıyım? Aslında bende: kollo

+0

Tam sorgu yapılandırmasını dizin zamanı olarak alarak başlayacağım. Birden çok kelime eşanlamlıları söz konusu olduğunda SynonymFilter'ı sorgudan tamamen kaldırmak için bir dava açabilirsiniz, ancak şimdilik bunu aynı bırakacağım. – spyk