使用停用词忽略排序中的文章

时间:2016-07-21 17:25:47

标签: solr

由于诸如""或" a"。
所以,我想使用停用词列表删除文章,然后按照所有单词排序。但是,它根本不起作用。现在排序到处都是。它似乎没有按照文章之后的第一个词排序。

以下是架构文件的信息。

 <field name="shareholder_nm_sort" type="sorted_text" indexed="true" stored="true" />

  <fieldType name="sorted_text" class="solr.TextField" positionIncrementGap="100">
   <analyzer>
     <filter class="solr.StopFilterFactory" words="sortstopwords.txt" ignoreCase="true"/>
   </analyzer>
  </fieldType>

以下是我致电

的停用词文件
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

the
a

1 个答案:

答案 0 :(得分:2)

停用词适用于令牌,这意味着根据文本的标记方式,它会跳过与停用词列表中的单词匹配的标记。问题在于,标记化的字符串对于排序并不是很有用,因为它看起来大多是随机的 - 因为当单个字符串被分解为一组标记时,没有可用的排序方法。

但有选择:

使用MappingCharFilterFactory列表"stopword" => ""。这将在标记之前过滤字符串。使用KeywordTokenizer可以避免在映射发生后进一步对字符串进行标记(字符串将被索引为单个标记)。如果您希望对排序大小写不敏感,也可以应用小写过滤器。如果您仍希望文本可搜索或显示实际索引值,请使用copyField指令将字段内容移动到单独的字段中 - 一个用于排序,另一个用于搜索或显示。

另一种可能的解决方案是在您自己的代码中编制索引之前执行停用词删除 - 这样的话根本不会进入Solr,您可以在常规的StrField上进行排序。