9

我已经到了绝望的地步,所以我正在寻求帮助。我正在尝试使用正则表达式从 Solr 4 引擎查询结果。

假设我要查询的文档是:

<str name="text">description: best company; name: roca mola</str>

我想使用这个正则表达式进行查询:

description:(.*)?company(.*)?;

我在一些论坛上读到,在 Solr 4 中使用正则表达式就像添加斜杠一样简单,例如:

localhost:8080/solr/q=text:/description\:(.*)?company(.*)?;/

但它不起作用。而这个也不起作用:

localhost:8080/solr/q=text:/description(.*)?company(.*)?;/

我不想要一个简单的查询,例如:

localhost:8080/solr/q=text:*company*

因为这会与以下文件不匹配:

<str name="text">description: my home; name: mother company"</str>

如果我不清楚,请告诉我。

来自智利的欢呼:D

注意:我text_general在我的方案中使用了字段。正如@arun 指出的那样,string字段可以处理我正在使用的正则表达式的类型。

4

1 回答 1

12

不要在字段类型上尝试正则表达式搜索,而是在text字段类型上尝试它string,因为您的正则表达式跨越多个单词。(如果您的正则表达式需要匹配一个单词,那么您可以使用一个text字段。)

还要对特殊字符进行百分比编码,以确保它们不是不匹配的原因。

q=strfield:/description%3A(.*?)company(.*?)%3B.*/

更新: 刚刚在字符串字段上尝试过。上面的正则表达式有效。即使没有百分比编码,它也可以工作,即

q=strfield:/description:.*?company.*?;.*/
于 2013-02-16T02:17:25.647 回答