Bonjour,
Remarque: je ne suis pas sûre que cette section soit la bonne pour poser une question sur solr; mais je n'ai pas trouvé mieux (n'hésitez pas à déplacer cette discussion si nécessaire, merci)

J'ai des fichiers xml dans une base Exist-db qui sont indexés par Solr.
Ceux-ci ressemblent à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<label dbp:hand="GF-encre">
                    <term rend="underline">Monarchie</term>.</label>
                <item>
                    <list>
                        <item type="fragment" n="3">
                            <cit dbp:hand="GF-encre">
                                <quote>si les <hi rend="underline">ruches d’<term>abeilles</term>
                                    </hi> prouvent la
                  monarchie, les fourmillières, les troupes d’éléphants ou de <lb/>
                                    <choice>
                                        <orig>C</orig>
                                        <reg>c</reg>
                                    </choice>astors prouvent la république.</quote>
                                <bibl xml:id="b-7468-3"/>
                            </cit>
                        </item>
                        <item type="fragment" n="4">
                            <cit dbp:hand="GF-encre">
                                <quote>- La Monarchie a son type dans le Pouvoir<note type="DBP-footnote">"pouvoir"
                    dans l’ouvrage de Block (t. II, p. 327).</note> paternel <choice>
                                        <orig>
                                            <c>&amp;</c>
                                        </orig>
                                        <reg>et</reg>
                                    </choice> dans le <choice>
                                        <abbr>Commandemt</abbr>
                                        <expan>Commandem<ex>en</ex>t</expan>
                                    </choice>
                                    <note type="DBP-footnote">"commandement" dans l’ouvrage de Block (t. II,
                    p. 327).</note> militaire <lb/>La religion entoure son berceau d’une auréole
                  mystique</quote>
                                <bibl xml:id="b-10460-3"/>
                            </cit>
                        </item>
                        <item type="fragment" n="5">
                            <cit dbp:hand="GF-encre">
                                <quote>- tous les peuples ont vu dans le Souverain<note type="DBP-footnote">"souverain" dans l’ouvrage de Block (t. II, p. 327).</note> la loi vivante -
                  mais l’idée d’y voir un représenta<supplied reason="decoupe" resp="#LF">nt</supplied>
                                    <lb/>de la Souveraineté<note type="DBP-footnote">"souveraineté" dans l’ouvrage de
                    Block (t. II, p. 327).</note> du peuple est une idée toute romaine.</quote>
                                <bibl xml:id="b-10461-3"/>
                            </cit>
                        </item>
                    </list>
                </item>
Je vous fait remarquer la partie rouge, source de mes problèmes.

Je voudrais,
lors d'une recherche plein text avec Solr, que "castor" me retourne le fichier cité plus haut; et ce n'est pas le cas. SI je veux le voir je dois rechercher
"c astor"

Pour cela, nous avions deux fieldType text et text_only:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  <fieldType name="text_only" class="solr.TextField" positionIncrementGap="100">
       <analyzer>
       <!-- analyseur configuré pour le français par Gaël -->
        <!-- suppression d'éventuelles balises HTML-->
        <charFilter class="solr.HTMLStripCharFilterFactory"/>
        <!-- découpage selon les espaces -->
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <!-- suppression de la ponctuation -->
        <filter class="solr.PatternReplaceFilterFactory" pattern="^(\p{Punct}*)(.*?)(\p{Punct}*)$" replacement="$2"/>
        <!-- suppression des tokens vides et des mots démesurés -->
        <filter class="solr.LengthFilterFactory" min="1" max="100" />
        <!-- passage en minuscules -->
        <filter class="solr.LowerCaseFilterFactory"/>
        <!-- suppression des élisions (l', qu',...) -->
        <filter class="solr.ElisionFilterFactory" articles="elisionwords.txt"/> 
        <!-- découpage des mots composés -->
        <filter class="solr.WordDelimiterFilterFactory" splitOnCaseChange="1" splitOnNumerics="1" stemEnglishPossessive="1" generateWordParts="1"
                                                        generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/>
        <!-- suppression des mots insignifiants -->
        <filter class="solr.StopFilterFactory" ignoreCase="1" words="stopwords.txt" enablePositionIncrements="true"/>
        <!-- gestion des synonymes -->
	<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <!-- lemmatisation (pluriels,...) -->
        <filter class="solr.SnowballPorterFilterFactory" language="French" protected="protwords.txt"/>
        <!-- normalisation des accents, cédilles, e dans l'o,...-->
        <filter class="solr.ASCIIFoldingFilterFactory"/>
        <!-- suppression des doublons éventuels -->
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
      </analyzer>
    </fieldType>
 
 
    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <!-- Case insensitive stop word removal.
          add enablePositionIncrements=true in both the index and query
          analyzers to leave a 'gap' for more accurate phrase queries.
        -->
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
      </analyzer>
    </fieldType>
et trois index (pour tester):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
   <field name="body" type="text" indexed="true" stored="true"/>
 
   <!-- body mais avec du XML -->
   <field name="body_xml" type="text" indexed="true" stored="true"/>
 
   <!-- body normalise avec html -->
   <field name="body_norm" type="text_only" indexed="true" stored="true"/>
Je les définit comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
$doc->addField('body_xml', str_replace ('<lb/>', '<br />', $mybody));
		$doc->addField('body_norm', str_replace ('<lb/>', '<br />', $mybody));
		$doc->addField('body', strip_tags($mybody));
 
		//$doc->addField('body_norm', strip_tags($mybody));
J'ai aussi essayer avec une transformation xslt (pour body_norm) qui m'affiche "castor" lors de l'affichage du doc xml dans le browser, mais cela ne change rien.
Avec l'exemple ci-dessus, si je vais dans solr admin analysis faire une requete sur text_only du bout d'xml cité, solr ne retourne aucun résultat.

Enfin, je suis un peu à cours d'idée, si vous pouviez m'aider; merci!!