Ruby 太阳黑子/太阳光:非字母字符
我正在使用太阳黑子/消光的Solr。是否可以查询非字母字符?即:Ruby 太阳黑子/太阳光:非字母字符,ruby,solr,lucene,sunspot,dismax,Ruby,Solr,Lucene,Sunspot,Dismax,我正在使用太阳黑子/消光的Solr。是否可以查询非字母字符?即: ~!@$%^&*()\uU9+-=[]{}\ 我知道+/-必须转义,因为它们是demax包含/排除运算符。但当我搜索这些字符时,没有找到匹配项: Foo.search { fulltext '=' }.results.length # => 0 Foo.search { fulltext '\=' }.results.length # => 0 然而: 以下是我正在使用的标记器配置: <field
~!@$%^&*()\uU9+-=[]{}\
我知道+/-
必须转义,因为它们是demax包含/排除运算符。但当我搜索这些字符时,没有找到匹配项:
Foo.search { fulltext '=' }.results.length # => 0
Foo.search { fulltext '\=' }.results.length # => 0
然而:
以下是我正在使用的标记器配置:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
Solr的
StandardTokenizer
删除了所有的“特殊字符”,因为它已优化为与纯文本一起使用。因此,例如“=”将找不到,因为它在索引过程中被从文本中剥离
保留所有字符的标记器之一是,它只在空白处分割输入。您需要评估它是否是解决您的问题的好方法,因为它将生成如下标记:
20岁的狐狸跳过了那只懒狗20岁的“狐狸”,“跳跃”,“越过”,“懒惰”,“狗”
您可能需要提供自己的标记器(实现标记器并不需要,您可以为拆分字符定义适当的正则表达式并使用),或者使用类似或的过滤器。您使用什么标记器?你确定它没有删除标点符号吗?用“文本”中使用的标记器更新了我的问题。
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>