1
votes

DSE 6.7 solr searh toujours retourner vide

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: entrez la description de l'image ici

mais ce n'est pas ok test dans la requête, renvoie toujours des données vides.

 entrez la description de l'image ici p>

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? entrez la description de l'image ici entrez la description de l'image ici

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)
);

entrez la description de l'image ici


6 commentaires

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?


3 Réponses :


0
votes

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?


4 commentaires

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.



0
votes

@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?


4 commentaires

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.



0
votes

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é). entrez la description de l'image ici

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.


0 commentaires