J'utilise DSE 6.7 avec 3 nœuds, 128 nœuds virtuels par nœud. J'ai configuré solr un IKAnalyzer pour la recherche de texte chinois. Il teste ok dans la console solr comme l'image ci-dessous:
mais ce n'est pas ok test dans la requête, renvoie toujours des données vides.
alors je teste est dans cassandra devCenter, c'est pareil, le nombre de données de retour n'est pas vide mais les données toujours vides?
Quelqu'un peut-il m'aider?
Définition de la table
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:å½ç¨å±"}';
Schéma Solr:
<?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>
Postez mon schéma de table simple et testez les données ici, la requête ci-dessous est renvoyée vide.
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) );
3 Réponses :
J'essaie de reproduire et une chose n'est pas claire pour moi: il semble que type
soit un mot-clé et je ne suis tout simplement pas sûr que la création de table / la création d'index se soit bien déroulée.
Table création avec
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) );
ne fonctionne pas
Obtenez-vous des données correctes à partir d'une requête pure cassandra sans utiliser la recherche dse?
Pouvez-vous essayer: ``
J'ai testé avec une table très simple sans "type", c'est la même erreur. CREATE TABLE IF NOT EXISTS rawdata.test (id int, title text, content text, PRIMARY KEY (id, title));
Seulement cela fonctionne, la clé primaire n'a qu'un identifiant. mais les données montrent tout comme "???" CREATE TABLE IF NOT EXISTS rawdata.test (id int, title text, content text, PRIMARY KEY (id));
Merci! Je vais me renseigner.
@peter J'ai fait quelques expériences et avec StrText et IK par défaut, tout fonctionne comme prévu:
automaton@ip-10-200-175-18:~$ cqlsh Connected to master at 127.0.0.1:9042. [cqlsh 5.0.1 | DSE 6.7.0 | CQL spec 3.4.5 | DSE protocol v2] Use HELP for help. cqlsh> describe active search index schema on rawdata.test2; <?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 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" type="StrField"/> <field indexed="true" multiValued="false" name="content" type="text_ik"/> <field indexed="true" multiValued="false" name="id" type="StrField"/> </fields> <uniqueKey>(id,title)</uniqueKey> </schema> cqlsh> SELECT * from rawdata.test2 WHERE solr_query='content:æå欢åé±¼'; id | title | content | solr_query ----+------------+------------+------------ ç° | æå欢åé±¼ | æå欢åé±¼ | null (1 rows)
L'IA ne peut pas non plus reproduire le problème avec l'analyseur IK:
cqlsh Connected to master at 127.0.0.1:9042. [cqlsh 5.0.1 | DSE 6.7.0 | CQL spec 3.4.5 | DSE protocol v2] Use HELP for help. cqlsh> CREATE KEYSPACE rawdata WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '2'} AND durable_writes = true; cqlsh> cqlsh> CREATE TABLE rawdata.test ( ... id int, ... title text, ... content text, ... solr_query text, ... PRIMARY KEY (id, title)); cqlsh> cqlsh> CREATE TABLE rawdata.test2 ( ... id text, ... title text, ... content text, ... solr_query text, ... PRIMARY KEY (id, title)); cqlsh> cqlsh> CREATE SEARCH INDEX ON rawdata.test; Warnings : Please remember this operation is DC specific and should be repeated on each desired DC. cqlsh> CREATE SEARCH INDEX ON rawdata.test2; Warnings : Please remember this operation is DC specific and should be repeated on each desired DC. cqlsh> cqlsh> insert into rawdata.test2(id, title, content) values ('ç°', 'æå欢åé±¼', 'æå欢åé±¼'); cqlsh> insert into rawdata.test(id, title, content) values (1, 'æå欢åé±¼', 'æå欢åé±¼'); cqlsh> cqlsh> SELECT * from rawdata.test WHERE solr_query='content:æå欢åé±¼'; id | title | content | solr_query ----+-------+---------+------------ (0 rows) cqlsh> SELECT * from rawdata.test2 WHERE solr_query='content:æå欢åé±¼'; id | title | content | solr_query ----+-------+---------+------------ (0 rows) cqlsh> cqlsh> SELECT * from rawdata.test2 WHERE solr_query='content:æå欢åé±¼'; id | title | content | solr_query ----+-------+---------+------------ (0 rows) cqlsh> SELECT * from rawdata.test2 WHERE solr_query='content:æå欢åé±¼'; id | title | content | solr_query ----+-------+---------+------------ (0 rows) cqlsh> commit search index on rawdata.test; cqlsh> commit search index on rawdata.test2; cqlsh> SELECT * from rawdata.test2 WHERE solr_query='content:æå欢åé±¼'; id | title | content | solr_query ----+------------+------------+------------ ç° | æå欢åé±¼ | æå欢åé±¼ | null (1 rows) cqlsh> SELECT * from rawdata.test WHERE solr_query='content:æå欢åé±¼'; id | title | content | solr_query ----+------------+------------+------------ 1 | æå欢åé±¼ | æå欢åé±¼ | null
Ce sont peut-être les données qui posent des problèmes OU la locale sur vos clusters / client? Pouvez-vous partager les données sous forme de texte?
Je n'utilise que 2 données simples, vous pouvez le vérifier dans mon message. Je ne peux pas le coller directement dans le post à la place avec une image. Peut-être que vous devriez regarder en profondeur. Mon DSE 6.7 est dans un env docker.
J'ai mis les données de test ici, merci. INSÉRER DANS rawdata.test (id, titre, contenu) VALUES (1, '财政部', '国的 税务 总局 关于 第二 批 全国 税务 领军 人才 培养 对象 选拔 笔试 的 通告'); INSÉRER DANS rawdata.test (id, titre, contenu) VALUES (2, '国税局', '湖南省 地方 税务局 转发 国
Je lance DSE 6.7 avec cassandra, spark, solr, graph.
J'ai un cluster DSE Search uniquement, mais cela n'a pas d'importance dans ce cas.
J'ai essayé avec les données fournies et je ne parviens pas à reproduire.
Je joins une capture d'écran car l'éditeur SO a un bug (je l'ai signalé).
Veuillez noter que dans le cas du préfixe StrField doit être suivi d'une étoile, alors qu'avec IKT ce n'est pas nécessaire.
Je crains donc que cela puisse être un problème environnemental de votre côté, comme les paramètres régionaux du cluster peut-être? Difficile à dire.
Pouvez-vous partager votre schéma pour cette table - à la fois la définition de table CQL et
schema.xml
pour Solr Pouvez-vous également vérifier que les données sont réellement dans la table? Peut-être que l'index est devenu invalide ...Vous pouvez également rejoindre DataStax Academy Slack: academy.datastax.com/slack - il y a # dse-search canaliser là où les gens pourraient aider de manière plus opérationnelle
Pour mon premier commentaire - vous pouvez essayer de reconstruire l'index avec
REBUILD SEARCH INDEX sur ks.table;
Je télécharge schema.xml et recharge le noyau.
Cela semble un bug de DSE6.7 solr, je ne sais pas comment il passe le test de version. Je remplace la clé primaire par un nombre entier cela fonctionne, mais il ne peut toujours pas l'afficher, toutes les données ressemblent à ????
Puis-je descendre à 6.0.4 avec 6.7 cassandra, graph, solr tables?