Lucene通配符查询,带有单个数字,不返回任何匹配结果

时间:2019-07-03 10:12:11

标签: lucene lucene.net

我正在用代码构造一个Lucene查询,以便调用第三方API来检索与邮政编码搜索匹配的记录。

我正在尝试使搜索中的空格无效,无论是根据要搜索的基础数据中的内容还是用户输入的内容,以便-

  • 如果用户搜索“ BU7 8DD”,则将返回包含“ BU78DD”或“ BU 78 DD”的记录
  • 如果用户搜索“ U78D”,则将返回包含“ BU7 8DD”或“ BU 78 DD”的记录

我认为我可以通过对用户输入的文本的每个字符进行通配符搜索来做到这一点,因为我的lucene查询看起来像这样,但是它不返回任何结果-

user searches: "BU7 8DD"

(PONO:*B* AND PONO:*U* AND PONO:*7* AND PONO:*8* AND PONO:*D* AND PONO:*D*)

results: 0

从一些调查中我认为,数字的包含是问题,因为当我在没有数字的情况下进行查询时会得到结果-

(PONO:*B* AND PONO:*U* AND PONO:*D* AND PONO:*D*)

results: 2
    BU7 8DD
    BD18 0UP

如果我在同一数据集上使用通配符号进行搜索,则没有结果-

(PONO:*7*)

results: 0

顺便说一句,如果我对多个字符进行通配符搜索,似乎可以处理数字-

(PONO:*U7*)

results: 1
   BU7 8DD 

我环顾四周,一些解决方案表明这可能是对数据建立索引和自定义解析器的方式,但是我无法访问对数据建立索引的方式,只能通过查询进行搜索。

有人会知道对于通配符搜索单个数字是否需要做些特别的事情?还是有一种更好的方法来进行忽略空格的搜索?

0 个答案:

没有答案