【问题标题】:In Sphinx Search, how do I add "hashtag" to the charset_table?在 Sphinx 搜索中,如何将“hashtag”添加到 charset_table?
【发布时间】:2012-05-09 20:50:19
【问题描述】:

我希望人们能够搜索 #photographyphotography。在 Sphinx 中,这些应该被视为两个不同的词。默认情况下,#photography 映射到 photography,我无法搜索主题标签。

我在this page 上读到,您可以将哈希标记添加到 charset_table 以完成此操作。我完全不知道如何做到这一点。我不知道 unicode,也不知道我的 charset_table 应该是什么。

谁能告诉我我的 charset_table 应该是什么?谢谢。

# charset_table     = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F

注意:我打算使用实时索引。 (不确定这是否会有所不同)

【问题讨论】:

    标签: search unicode utf-8 lucene sphinx


    【解决方案1】:

    我希望人们能够搜索#photography 以及摄影。在 Sphinx 中,这些应该被视为两个不同的词。默认情况下,#photography 映射到摄影,我无法搜索主题标签。

    美好的一天。

    我认为它可以解决您的问题,但是:

    直接从用户查询中调用搜索功能是一种不好的方式。

    在 sphinx 引擎中调用搜索功能之前,需要对用户字符串进行某种处理。 例如,您可以检查用户字符串中的某种特殊字符并从查询中删除特殊字符。之后你可以调用搜索功能进行查询。

    祝你好运。

    【讨论】:

      【解决方案2】:

      根据 Unicode 表,它是 U+0023。所以最终的配置应该是这样的

      charset_table     = 0..9, A..Z->a..z, _, a..z, U+23, U+410..U+42F->U+430..U+44F, U+430..U+44F
      

      不要忘记charset_type 变量。 AFAIK,此示例 charset_table 用于 utf-8。除此之外,您应该从 blend_chars 变量中删除 U+23 以允许 Sphinx 将其索引为合法字符。

      【讨论】:

      • 谢谢保罗。整个字符串会是什么样子?我是否只是将其添加到末尾,并在其前面加上逗号?不知道最终结果会是什么......
      • 更新并提供了更多信息。
      • 除了目前的要求,有没有什么办法可以让用户搜索“photography”时,也返回“#photography”的结果?但反之则不然……
      • expand_keywords 应该可以解决这个问题,尽管应该使用infix search 而不是prefix search。我不知道它是否适用于特殊字符,例如井号。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 2023-04-10
      相关资源
      最近更新 更多