【问题标题】:Trim whitespace and Ignore Hash sign in Solr在 Solr 中修剪空格并忽略哈希符号
【发布时间】:2016-06-20 20:16:45
【问题描述】:

我是 Solr 的新手,我在“修剪空白”和“忽略哈希符号”方面遇到问题。

例如,如果我的数据库中有以下结果:

"Red Blue abc",  
"abc RedBlue",  
"Red abc Blue",  
"Red abc",  
"Blue abc" 

现在,如果搜索“RedBlue”,我会得到以上所有结果,但如果搜索“Red Blue”,我将无法检索上述所有结果。有些人正在错过。井号也有同样的问题。如果我搜索“Red#Blue”,我也会遇到同样的问题。

提前致谢。

【问题讨论】:

  • 您可以使用str_replacepreg_replace 去除空格和井号标签,但这可能会提供与用户期望不同的内容,不是吗?例如,无法区分 be forebefore

标签: java php mysql solr


【解决方案1】:

您可以使用 MySQL 的 FULLTEXT 功能:

  1. 在你的表上创建索引:

    CREATE FULLTEXT INDEX text_index ON your_table(text_field);
    
  2. 使用全文搜索语句:

    mysql> SELECT * FROM your_table WHERE MATCH(text_field) 
             AGAINST('Red Blue');
    +--------------+
    | text_field   |
    +--------------+
    | Red Blue abc |
    | Red abc Blue |
    | Red abc      |
    | Blue abc     |
    +--------------+
    4 rows in set (0,00 sec)
    

您必须在运行查询之前替换井号。

【讨论】:

    【解决方案2】:

    您的示例似乎更多地是关于在索引或搜索期间可能在一起或分开的单词。

    在 Solr 中,这是在分析期间通过在分析器链中包含 WordDelimiterFilter 来处理的。您可以在 Solr Start 上看到 the links to the examples that use it。 Solr 附带的示例也使用该过滤器,因此请务必阅读教程。

    【讨论】:

      猜你喜欢
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      相关资源
      最近更新 更多