Files
site11/services/search/solr-config/conf/managed-schema.xml
2025-09-28 20:41:57 +09:00

105 lines
5.2 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<schema name="site11" version="1.6">
<!-- Field Types -->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="int" class="solr.IntPointField" omitNorms="true"/>
<fieldType name="long" class="solr.LongPointField" omitNorms="true"/>
<fieldType name="float" class="solr.FloatPointField" omitNorms="true"/>
<fieldType name="double" class="solr.DoublePointField" omitNorms="true"/>
<fieldType name="date" class="solr.DatePointField" omitNorms="true"/>
<!-- Text field with analysis -->
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- Text field for exact matching -->
<fieldType name="text_exact" class="solr.TextField">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<!-- Autocomplete/Suggest field -->
<fieldType name="text_suggest" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="20"/>
</analyzer>
</fieldType>
<!-- Fields -->
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="_version_" type="long" indexed="true" stored="true"/>
<!-- Document type and metadata -->
<field name="doc_type" type="string" indexed="true" stored="true" docValues="true"/>
<field name="indexed_at" type="date" indexed="true" stored="true"/>
<!-- Common fields across document types -->
<field name="title" type="text_general" indexed="true" stored="true" termVectors="true"/>
<field name="content" type="text_general" indexed="true" stored="true" termVectors="true"/>
<field name="description" type="text_general" indexed="true" stored="true"/>
<field name="summary" type="text_general" indexed="true" stored="true"/>
<field name="tags" type="string" indexed="true" stored="true" multiValued="true" docValues="true"/>
<field name="category" type="string" indexed="true" stored="true" docValues="true"/>
<field name="status" type="string" indexed="true" stored="true" docValues="true"/>
<!-- User-specific fields -->
<field name="user_id" type="string" indexed="true" stored="true"/>
<field name="username" type="text_exact" indexed="true" stored="true"/>
<field name="email" type="text_exact" indexed="true" stored="true"/>
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="bio" type="text_general" indexed="true" stored="true"/>
<!-- File-specific fields -->
<field name="file_id" type="string" indexed="true" stored="true"/>
<field name="filename" type="text_general" indexed="true" stored="true"/>
<field name="original_name" type="text_general" indexed="true" stored="true"/>
<field name="content_type" type="string" indexed="true" stored="true" docValues="true"/>
<field name="size" type="long" indexed="true" stored="true"/>
<!-- Content-specific fields -->
<field name="content_id" type="string" indexed="true" stored="true"/>
<field name="author_id" type="string" indexed="true" stored="true"/>
<!-- Dates -->
<field name="created_at" type="date" indexed="true" stored="true"/>
<field name="updated_at" type="date" indexed="true" stored="true"/>
<!-- Suggest field for autocomplete -->
<field name="suggest" type="text_suggest" indexed="true" stored="false" multiValued="true"/>
<!-- Copy fields for better search -->
<copyField source="title" dest="suggest"/>
<copyField source="name" dest="suggest"/>
<copyField source="filename" dest="suggest"/>
<copyField source="tags" dest="suggest"/>
<!-- Dynamic fields -->
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
<dynamicField name="*_f" type="float" indexed="true" stored="true"/>
<dynamicField name="*_d" type="double" indexed="true" stored="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
<dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>
<dynamicField name="*_b" type="boolean" indexed="true" stored="true"/>
<!-- Unique Key -->
<uniqueKey>id</uniqueKey>
</schema>