Точный Поиск в Solr на поле - PullRequest
       3

Точный Поиск в Solr на поле

1 голос
/ 18 сентября 2019

Я хочу точно сопоставить одно из полей (доменов) в моей коллекции.Прямо сейчас, если я ищу «DIU», это приводит меня к «DIU» и «DIU / DRRU», мне нужен только «DIU».Когда я ищу "DIU / DRRU", мне нужно только "DIU / DRRU".Как я могу этого добиться?я использую Solr 7.4

Мои настройки схемы -

"name":"domain",
        "type":"text_general",
        "multiValued":false,
        "indexed":true,
        "stored":true},

{
        "name":"text_general",
        "class":"solr.TextField",
        "positionIncrementGap":"100",
        "multiValued":true,
        "indexAnalyzer":{
          "tokenizer":{
            "class":"solr.StandardTokenizerFactory"},
          "filters":[{
              "class":"solr.StopFilterFactory",
              "words":"stopwords.txt",
              "ignoreCase":"true"},
            {
              "class":"solr.LowerCaseFilterFactory"}]},
        "queryAnalyzer":{
          "tokenizer":{
            "class":"solr.StandardTokenizerFactory"},
          "filters":[{
              "class":"solr.StopFilterFactory",
              "words":"stopwords.txt",
              "ignoreCase":"true"},
            {
              "class":"solr.SynonymGraphFilterFactory",
              "expand":"true",
              "ignoreCase":"true",
              "synonyms":"synonyms.txt"},
            {
              "class":"solr.LowerCaseFilterFactory"}]}},

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Используйте поле String вместо поля text_general - поле text_general (с прикрепленным StandardTokenizer) разделится на /.Поле string даст совпадение, только если поле совпадает с сохраненным значением.

0 голосов
/ 19 сентября 2019

В настоящее время поле domain имеет text_general в качестве типа поля для вашего поля.Используйте keywordTokenizer для своего поля, если вы ищете точные совпадения.Так как он не создает токены текста.

keywordTokenizer: This tokenizer treats the entire text field as a single token.

Вы можете использовать тип поля ниже для своего поля.Преимущество было бы в том, что это помогло бы искать слова во всех случаях ... В верхнем и нижнем регистре оба.

<fieldType name="lowercaseExactMatch" class="solr.TextField" positionIncrementGap="100">
   <analyzer>
     <tokenizer class="solr.KeywordTokenizerFactory"/>
     <filter class="solr.LowerCaseFilterFactory" />
   </analyzer>
</fieldType>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...