我使用的DSE6.7有3个节点,每个节点128个虚拟节点。我已经为搜索中文文本配置了solr a ikanalyzer。在solr控制台中测试正常,如下图所示:
但在查询中不可以测试,总是返回空数据。
那么我测试的是在cassandradevcenter中,它是一样的,返回的数据计数不是空的,但是数据总是空的?
有人能帮我吗?
表定义
CREATE TABLE IF NOT EXISTS rawdata.tax_law (
type text,
cityname text,
items text,
title text,
link text,
accessory text,
content text,
article date text,
number text,
pubdate date,
valid text,
PRIMARY KEY (title, type, date)
);
解决方案:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <schema name="autoSolrSchema" version="1.5"> <types>
<fieldType class="org.apache.solr.schema.StrField" name="StrField"/>
<fieldType class="com.datastax.bdp.search.solr.core.types.SimpleDateField" name="SimpleDateField"/>
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false" >
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
</analyzer>
<analyzer type="query" useSmart="true" >
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory"/>
</analyzer>
</fieldType> </types> <fields>
<field indexed="true" multiValued="false" name="title" stored="true" type="StrField"/>
<field indexed="true" multiValued="false" name="items" type="StrField"/>
<field indexed="true" multiValued="false" name="article_date" type="StrField"/>
<field indexed="true" multiValued="false" name="cityname" type="StrField"/>
<field indexed="true" multiValued="false" name="number" type="StrField"/>
<field docValues="true" indexed="true" multiValued="false" name="pubdate" type="SimpleDateField"/>
<field indexed="true" multiValued="false" name="content" stored="true" type="text_ik"/>
<field indexed="true" multiValued="false" name="link" type="StrField"/>
<field indexed="true" multiValued="false" name="type" type="StrField"/>
<field indexed="true" multiValued="false" name="valid" type="StrField"/>
<field indexed="true" multiValued="false" name="accessory" type="StrField"/>
<field name="searchText" type="text_ik" indexed="true" stored="false" multiValued="true" /> </fields> <uniqueKey>(title,type,article_date)</uniqueKey>
<defaultSearchField>searchText</defaultSearchField>
<solrQueryParser defaultOperator="OR" /> <copyField source="title" dest="searchText" /> <copyField source="content" dest="searchText" /> </schema>
在这里发布我的简单表模式和测试数据,下面的查询返回空。
CREATE TABLE IF NOT EXISTS rawdata.test(
id int,
title text,
content text,
PRIMARY KEY (id, title)
);
select * from rawdata.test;
select * from rawdata.test where solr_query='{"q":"content:税法"}';
select * from rawdata.test where solr_query='{"q":"title:国税局"}';
3条答案
按热度按时间bvuwiixz1#
@peter我做了一些实验,使用默认的strtext和ik,一切正常:
a我也无法用ik analyzer再现问题:
可能是数据导致了问题或集群/客户机上的区域设置?你能以文本形式分享数据吗?
qv7cva1a2#
我试过提供的数据,但我无法复制。
我附上截图,以便编辑器有一个错误(我已经报告了它)。
请注意,如果是strfield,前缀后面必须跟一个星号,而对于ikt则没有必要。
所以我担心这可能是你这边的一些环境问题,比如集群区域设置?很难说。
vaqhlq813#
我正在努力繁殖,但有一件事我并不清楚:似乎
type
是一个关键字,我只是不确定表创建/索引创建是否进行得很好。表创建提供了
不起作用
不使用dse搜索,你能从纯cassandra查询中得到正确的数据吗?