【问题标题】:solr search with keywords having space not giving proper results使用有空格的关键字进行 solr 搜索,但没有给出正确的结果
【发布时间】:2017-07-25 11:08:36
【问题描述】:

我有一个关键字列表,其中很少有人在下面

便宜的酒店 迪拜酒店 扩展酒店 …… ..

为此我有 store(storeName:HotelsStore) 并将上面的关键字(有空格)添加到我的商店并进行 solr 索引。如果我们搜索 “廉价酒店”我的商店:HotelsStore 没有显示结果。

但是,如果我添加没有空格和索引的“廉价酒店”。如果我使用“Cheaphotels”搜索,那么我想要的商店(HotelsStore)就会显示在结果中。

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

请帮帮我。

谢谢, 沙马拉。

【问题讨论】:

  • 什么是字段类型以及哪些分析器应用于该字段?这肯定是如何通过过滤器或标记器为字段创建标记的问题。

标签: solr lucene


【解决方案1】:

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

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

举例:

这样做的一种方法是指定 generateWordParts="1" catenateWords="1" 在用于索引的分析器中,以及 generateWordParts="1" 在用于查询的分析器中。鉴于 当前的 StandardTokenizer 立即删除了许多词内 分隔符,建议该过滤器后使用 将它们留在原地的标记器(例如 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

【讨论】:

  • 感谢您的回复@Oyeme。 .廉价酒店,迪拜酒店,扩展酒店是添加到商店的关键字(它的名字是:hotelsStore)作为关键字不在storeName中。我们已经在使用“WordDelimiterFilterFactory”,我已经使用了如下 catenateWords="1" catenateNumbers="1" 但仍然面临同样的问题。谢谢..Syamala。
  • 您能否提供更多有关您正在使用的字段、过滤器的信息?您还可以使用分析器查看字段未显示的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2019-03-02
  • 1970-01-01
相关资源
最近更新 更多