2016-04-05 51 views
0

文件考虑一个简单的表:如何找到SOLR查询和详细的字符串匹配

CREATE TABLE transactions (
    enterprise_id uuid, 
    transaction_id text, 
    state text, 
    PRIMARY KEY ((enterprise_id, transaction_id)) 

和Solr核心默认,自动生成的参数。

我该如何构建一个Solr查询,该查询将在此表中找到具有state值与输入完全匹配的记录,考虑到state可以是任意字符串?

我试过这个状态值为a+b。这正常工作与q=state:"a+b",而是创造了一个“短语查询”:

"rawquerystring": "state:\"a+b\"", 
"querystring": "state:\"a+b\"", 
"parsedquery": "PhraseQuery(state:\"a b\")", 
"parsedquery_toString": "state:\"a b\"", 

所以,如果我使用查询像q=state:"a(b",其结果都是相同的措辞查询,发现记录与state相同的记录被发现a+b。这是我无法接受的,因为我需要一个完全匹配。

我通过https://cwiki.apache.org/confluence/display/solr/Other+Parsers,并尝试使用q={!term f=state}a+bq={!raw f=state}a+b,但都没有发现我的样本交易记录。

回答

1

也许你有一个TextField其中标准标记化应用StandardTokenizer,然后分割由上+和加号本身被丢弃产生state。你可以使用一个不同的标记器(空格?),或者只是为了完全匹配而使状态为StrField

这对我的作品与state作为StrField

select * from transactions where solr_query='state:a+b';

+0

'StrField'是比一个标记,TY碴更容易:) –