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(正規表現が1つの単語と一致する必要がある場合は、textフィールドを使用できます。)

また、特殊文字が不一致の原因ではないことを確認するために、特殊文字のパーセントエンコードを実行します。

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

更新: 文字列フィールドで試してみました。上記の正規表現は機能します。パーセントエンコーディングがなくても機能します。

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