使用空格不能给出正确结果的关键字搜索solr

时间:2017-07-25 11:08:36

标签: solr lucene

我有一些关键字列表,其中很少有

经济型酒店 迪拜酒店 扩展的酒店 .... ..

我有商店(storeName:HotelsStore),并将上面的关键字(有空格)添加到我的商店并进行solr索引。如果我们搜索  "经济型酒店"我的商店:HotelsStore没有显示结果。

但如果我添加" Cheaphotels"没有空间和索引。如果我用" Cheaphotels"然后我想要的商店(HotelsStore)显示在结果中。

注意:我们使用的是lucene 5.4和solr 5.4。

请帮我解决这个问题。

谢谢, Syamala。

1 个答案:

答案 0 :(得分:1)

尝试使用 storeName 字段上的WordDelimiterFilter过滤器生成单词部分。

您可以根据需要自定义此过滤器。

只是示例:

  

这样做的一种方法是指定generateWordParts =“1”   用于索引的分析器中的catenateWords =“1”,和   用于查询的分析器中的generateWordParts =“1”。鉴于   当前的StandardTokenizer会立即删除许多内部字   分隔符,建议在a之后使用此过滤器   将它们留在原处的tokenizer(例如WhitespaceTokenizer)。

<tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.WordDelimiterFilterFactory"
            generateWordParts="1"
            generateNumberParts="1"
            catenateWords="1"
            catenateNumbers="1"
            catenateAll="0"
            preserveOriginal="1"
            />

GENERATE_WORD_PARTS 设置为1

Causes parts of words to be generated:

"HotelsStore" => "Hotel" "Store"

https://lucene.apache.org/core/4_4_0/analyzers-common/org/apache/lucene/analysis/miscellaneous/WordDelimiterFilter.html