Сфинкс, не используя auto_increment идентификатор

Во-первых, тестирование похоже на безопасность - Вы никогда не можете быть на 100% уверены, что у Вас есть он, но каждый слой добавляет больше уверенности и платформу для того, чтобы более легко решить проблемы, которые остаются.

113-секундный, можно повредить тесты в подпрограммы, которые сами могут тогда быть протестированы. Когда у Вас есть 20 подобных тестов, делание (протестированной) подпрограммы означает, что Ваш основной тест является 20 простыми вызовами подпрограммы, которая, намного более вероятно, будет корректна.

В-третьих, некоторые утверждали бы, что TDD обращается к этому беспокойству. Таким образом, если Вы просто пишете 20 тестов, и они передают, Вы не абсолютно уверены, что они на самом деле тестируют что-либо. Но если каждый тест, который Вы записали первоначально , перестал работать , и затем Вы зафиксировали его, тогда Вы намного более уверены, что он действительно тестирует Ваш код. По моему скромному мнению, это назад и вперед занимает больше времени, чем это стоит, но это - процесс, который пытается обратиться к Вашему беспокойству.

5
задан squeeks 29 October 2009 в 16:07
поделиться

4 ответа

sphinx only requires ids to be integer and unique, it doesn't care if they are auto incremented or not, so you can roll out your own logic. For example, generate integer hashes for your string keys.

3
ответ дан 18 December 2019 в 07:09
поделиться

Конечно, это легко обойти. Если вам нужно создать свои собственные идентификаторы только для Sphinx и вы не хотите, чтобы они конфликтовали, вы можете сделать что-то вроде этого в своем sphinx.conf (пример кода для MySQL)

source products {

  # Use a variable to store a throwaway ID value
  sql_query_pre = SELECT @id := 0 

  # Keep incrementing the throwaway ID.
  # "code" is present twice because Sphinx does not full-text index attributes
  sql_query = SELECT @id := @id + 1, code AS code_attr, code, description FROM products

  # Return the code so that your app will know which records were matched
  # this will only work in Sphinx 0.9.10 and higher!
  sql_attr_string = code_attr  
}

Единственная проблема в том, что вам все еще нужно способ узнать, какие записи соответствуют вашему поиску. Sphinx вернет идентификатор (который теперь не имеет смысла) плюс любые столбцы, которые вы пометите как «атрибуты».

Sphinx 0.9.10 и выше сможет вернуть вам код продукта как часть результатов поиска, потому что он поддержка строковых атрибутов.

0.9.10 еще не является официальным выпуском, но выглядит отлично. Похоже, что Заводный запускает его в списке Крейга , поэтому я не буду слишком нервничать, полагаясь на эту функцию.

17
ответ дан 18 December 2019 в 07:09
поделиться

Sphinx не зависит от автоматического увеличения, ему нужны только уникальные целочисленные идентификаторы документов. Возможно, вы можете иметь суррогатный уникальный целочисленный идентификатор в таблицах для работы со сфинксом. Как известно, целочисленный поиск намного быстрее, чем буквенно-цифровой. Кстати, как долго у вас буквенно-цифровой код продукта? есть образцы?

1
ответ дан 18 December 2019 в 07:09
поделиться

Я думаю, что можно сгенерировать поток XML из ваших данных. Затем создайте идентификатор с помощью программного обеспечения (Ruby, Java, PHP).

Взгляните на http://github.com/burke/mongosphinx

1
ответ дан 18 December 2019 в 07:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: