【问题标题】:JAVA - Lucene search query - hyphens with wildcardsJAVA - Lucene 搜索查询 - 带通配符的连字符
【发布时间】:2013-05-31 13:49:54
【问题描述】:

Lucene (v3.5) 搜索查询存在很大问题。我正在尝试使用包含连字符和通配符的查询来检索带有连字符的字符串,例如: 数据库中的名称: A4RER-88-22331 A4RER-22-32555 B3B8B-22-32555

查询:A4RER-*

我使用过 WhitespaceAnalyzer(早期的 StandardAnalyzer),但是...查询适用于“A4RER*”但不适用于“A4RER-*”:( 我已经用谷歌搜索了很多,但仍然找不到解决方案。有没有一种简单的方法可以强制它工作?

感谢任何提示/帮助/sn-p/任何东西

【问题讨论】:

  • 您需要使用不会在 - 上中断的分词器。 WhitespaceAnalyzer 可能会中断 - 默认情况下。
  • 是 - 充当不在这里?你能试试逃跑检查吗?
  • @bmargulies 我还不太熟悉如何编写 Tokenizer。感谢您的提示。我现在将开始“谷歌搜索”如何编写自定义标记器。谢谢。
  • @Jayendra Nope...这不起作用:( 带有转义连字符的 sych 查询仍然没有结果。
  • @bmargulies 嗯。刚刚发现这个:karticles.com/nosql/lucene_custom_tokenizer.html 它清楚地表明 WhitespaceTokenizer 不会在“-”处停止。现在我很困惑。无论如何,我会尝试编写自己的标记器。

标签: search lucene wildcard hyphen


【解决方案1】:

使用通配符查询时,将连字符替换为问号。问号代表一个字符。

改变这个:“查询:A4RER-*”

对此:“查询:A4RER?*”

【讨论】:

    猜你喜欢
    • 2014-06-07
    • 2015-12-23
    • 2018-04-20
    • 2016-08-15
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多