如何使用正则表达式中的Solr 4查询(How to use regex for querying

2019-07-19 22:33发布

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

让我们asume我想查询的文档:

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

我想用这个正则表达式来查询:

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

我在读一些论坛上 ,在4 Solr的使用正则表达式是那么容易,因为加斜杠,如:

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领域可以处理我使用正则表达式的类型。

Answer 1:

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

还做百分号编码的特殊字符,只是为了确保他们不为错配的原因。

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

更新:刚在一个字符串字段。 上述正则表达式的作品。 它的工作原理,即使没有百分号编码也即

q=strfield:/description:.*?company.*?;.*/


文章来源: How to use regex for querying in Solr 4
标签: regex solr