【问题标题】:Solr to Tokenize on white space, comma and periodSolr 在空格、逗号和句点上进行标记
【发布时间】:2014-02-13 16:57:40
【问题描述】:

我正在尝试强制 Solr 在空格、逗号、:; 上标记文档。类似于 SQL Server 全文搜索所做的事情。如果我使用 text_general 字段,那么它会标记其他字符以及 ('/','\','-') ,我尝试使用

<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>

有什么我想念的吗?我还必须搜索不区分大小写的比较。

【问题讨论】:

    标签: solr solrnet solr4


    【解决方案1】:

    您的模式实际上是错误的,请尝试以下方法: pattern="[\s,;:]"

    您可能想尝试的替代方法:

    【讨论】:

    • 谢谢,这真的很有帮助。
    • 你知道如何在模式中添加&amp;lt;&amp;gt;,由于XML 规则,我无法在XML 中指定,如果我使用&amp;gt;&amp;lt; 它不会'似乎没有标记它
    • &amp;lt;&amp;gt; 被 Solr 解析为 &amp;lt;&amp;gt;,所以你是对的。但是,&amp;lt;&amp;gt; 必须以正则表达式模式转义才能被视为文字,所以请尝试:\&amp;lt; \&amp;gt;(尚未测试)
    猜你喜欢
    • 1970-01-01
    • 2014-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多