Solr:将数据值的模式文件中的类型定义为FilePath

时间:2013-01-02 07:58:55

标签: solr

我想在SOLR数据文件夹中上传FilePath,并使用LIKE操作通过我的网站进行搜索。

因为我尝试在模式文件中使用以下类型但是不成功。

尝试1。

<fieldType name="string_wildcards" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
        <filter class="solr.ISOLatin1AccentFilterFactory"/>
        <filter class="solr.TrimFilterFactory" />
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StandardFilterFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
        <filter class="solr.ISOLatin1AccentFilterFactory"/>
        <filter class="solr.TrimFilterFactory" />
      </analyzer>
    </fieldType>

Try2。使用Letter Tokeniser。

  <fieldType name="string_wildcards_letter" class="solr.TextField" positionIncrementGap="100">
          <analyzer type="index">
              <tokenizer class="solr.LetterTokenizerFactory"/>
              <filter class="solr.LowerCaseFilterFactory"/>
              <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="30"/>
          </analyzer>
          <analyzer type="query">
              <tokenizer class="solr.StandardTokenizerFactory"/>
              <filter class="solr.StandardFilterFactory"/>
              <filter class="solr.LowerCaseFilterFactory"/>
          </analyzer>
      </fieldType>

尝试3.使用关键字标记符。

<fieldType name="string_wildcards_keyword" class="solr.TextField" positionIncrementGap="100">
              <analyzer type="index">
                  <tokenizer class="solr.KeywordTokenizerFactory"/>
                  <filter class="solr.LowerCaseFilterFactory"/>
                  <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="30"/>
              </analyzer>
              <analyzer type="query">
                  <tokenizer class="solr.StandardTokenizerFactory"/>
                  <filter class="solr.StandardFilterFactory"/>
                  <filter class="solr.LowerCaseFilterFactory"/>
              </analyzer>
          </fieldType>

以上三次尝试均未成功。 Anybodies帮助将不胜感激。

SOLR查询示例

Field Name: 
OriginalFilePath

My Input value is:
X:\Intake\1102\02.01.11\TX_DA26396_RushTopCompanies_Non-SERFF_01.28.11_PR\TX_P_1_01.28.11_NS\Dairyland County Mutual Insurance Company_01.28.11 03.pdf

My Query is:
OriginalFilePath:(x\\:\\\\intake\\\\1102\\\\02.01.11\\\\tx_da26396_rushtopcompanies_non\\-serff_01.28.11_pr\\\\tx_p_1_01.28.11_ns\\\\dairyland county mutual insurance company_01.28.11 03.p*)

最后astryks用于在该字段上使用LIKE操作。

如果我的查询形成有任何问题,请告诉我。

感谢。

2 个答案:

答案 0 :(得分:0)

您应该使用通配符搜索。您可以在此处找到类似的问题:Wildcard search in Solr

答案 1 :(得分:0)

您可以查看PathHierarchyTokenizer,它将拆分路径并帮助您执行通配符查询。

您也可以使用RegularExpressionPatternTokenizer并在分隔符上生成标记。 您最终会得到可以与通配符查询一起使用的单个令牌(而不是文件路径层次结构)