Синтаксис запроса SOLR «LIKE» для нестрокового типа данных

#php #solr #wildcard

#php #solr #подстановочный знак

Вопрос:

У меня проблема с синтаксисом SOLR моего запроса. На странице администратора я попытался использовать этот запрос

 description:*home*
  

и результатом являются все документы, содержащие слово «home» в поле описания.

но, когда я пытаюсь сделать что-то подобное для поля price (которое имеет тип данных float), для него нет результата.

Кто-нибудь может сказать мне, как использовать синтаксис подстановочных знаков в SOLR для числовых типов данных (таких как integer, float, real и т.д.)?

Спасибо_

Ответ №1:

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

Вероятно, то, что вы на самом деле хотите сделать, это запрос диапазона для ваших числовых полей. Что-то вроде:

 price:[17 TO *]   ' 17 or higher
price:[17 TO 18]  ' between 17 and 18 (inclusive)
  

Смотрите SolrQuerySyntax

Если это не поможет, возможно, сообщите нам, чего вы пытаетесь достичь.

Комментарии:

1. Сейчас я создаю функцию поиска. Если я ввожу что-либо в текстовое поле (например, 45000), то я использую SOLR для получения всех полей, содержащих входные данные, независимо от типа данных string или number. Я хотел бы, чтобы вы могли мне помочь, спасибо.

2. Я не уверен, что вы здесь имеете в виду. Пожалуйста, четко объясните, чего вы пытаетесь достичь и что вы пробовали, и я постараюсь помочь

3. У меня есть текстовое поле, которое будет использоваться пользователем для ввода ключевых слов и кнопки поиска для выполнения действия поиска. В моих документах, например, у меня есть 3 поля: price (float), name (строка) и description (строка). Когда пользователь вводит ключевые слова, а затем нажимает кнопку поиска, чтобы выполнить действие, он выполнит поиск по всем полям документов, которые содержат эти ключевые слова. Итак, я использую подстановочный знак для этого. Это работает для строкового типа данных, но не для типа данных с плавающей точкой. В моем поисковом действии я использую цикл для поиска по каждому полю в каждом документе. Я надеюсь, вы понимаете, что я имею в виду,.

4. Зачем вам нужно использовать подстановочные знаки? Обратите внимание, что если вы используете анализатор запросов dismax, поиск description:*home * будет точно таким же, как description:home Это связано с тем, что символы * удалены, dismax не поддерживает подстановочные знаки. Посмотрите в вашем solrconfig.xml файл для <str name=»defType»>dismax</str>.