2014-02-13 41 views
0

我想強制Solr標記文本上的空白,逗號,:;。類似於SQL Server全文搜索的功能。如果我使用text_general場則在標記化其他字符,以及像('/','\','-'),我嘗試使用Solr Tokenize在白色空間,逗號和期間

<tokenizer class="solr.PatternTokenizerFactory" pattern="\s*,:;\s*"/> 

但它並不記號化它。這裏是我的FieldType長相如下:

<fieldType name="text_sqlserver" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
    <tokenizer class="solr.PatternTokenizerFactory" pattern="\s*,:;\s*"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.PatternTokenizerFactory" pattern="\s*,:;\s*"/> 
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> 
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

有什麼我失蹤了嗎?我還必須搜索不區分大小寫的比較。

回答

6

你的模式其實是錯誤的,你可以試試這個: pattern="[\s,;:]"

你可能想嘗試另一種:

+0

謝謝你,這是真的很有幫助。 – user2711965

+0

你知道我怎麼能在模式中加'<' and '>',我不能用XML規則來指定它,如果我用'>','<',它似乎沒有標記它 – user2711965

+0

'<'和'Solr'>'被解析爲'<' and '>',所以你是對的。然而,'<' and '>'必須以正則表達式格式轉義才能被認爲是文字,所以試試:'\ <''\ >'(尚未測試) – EricLavault